gpt4 book ai didi

ruby-on-rails - 覆盖 database.yml 的策略

转载 作者:太空宇宙 更新时间:2023-11-03 18:30:41 25 4
gpt4 key购买 nike

这个标题在stackoverflow上还有一个问题。这是link到那个。我的问题有点不同,但几乎在同一条线上

我使用的数据库有多个用户,每个用户对数据库都有一组独特的权限。因此,我无法在 database.yml 中对数据库登录详细信息进行硬编码。相反,我想创建一个 html 表单来收集登录凭据。我知道 database.yml 可以从此 link 以 erb 方式编写.但是到那时,显示了我的 index.html(我在其中编写表单的页面),建立连接的尝试已经完成,它抛出一个错误,说没有为用户名和密码提供 nil。请让我知道如何解决这个问题。

我是 Rails 的新手,所以请问我是否没有提供足够的信息。提前致谢

最佳答案

使用ActiveRecord::ConnectionHandling.establish_connection函数调用以连接到您的数据库。如果愿意,您甚至应该能够在每个页面上与不同的用户建立连接,或者在用户模型中查找数据库凭据。

如果您正在这样做,您可以考虑子类化 ActiveRecord::Base 并覆盖 connection 调用,然后每个模型都会使用它来连接到数据库.

如果您希望在通过应用程序显式设置凭据之前完全避免与数据库的连接,那么您可能希望初始化 Rails 而无需加载所有 ActiveRecord 特定内容。在这种情况下,您需要通过将此行放入 config/environment.rb 中,在 Rails::Initializer.run do |config|< 中从 Rails 的初始化中删除 ActiveRecord/ block :

config.frameworks -= [ :active_record ]

一旦您获得凭据,您将需要加载所有 ActiveRecord 特定的东西。

或者,您可以覆盖 Rails::Initialize::initialize_database,这是使用实际数据库连接的地方,方法是将它放在您的 environment.rb 中,放在 Rails::Initializer 之前。运行调用:

module Rails
class Initializer
def initialize_database
nil
end
end
end

在 rails 4.x 之前你会使用 ActiveRecord::Base.establish_connection ,现已弃用。

关于ruby-on-rails - 覆盖 database.yml 的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4862563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com