访问模型 production.rb rails 3

Access the model in production.rb rails 3

我有一个名为 SystemSettings 的模型,它有一个名称和一个值。这是我为我的应用程序存储大部分配置的地方。我需要能够在我的 rails 3.2 应用程序中的 production.rb 中访问它。你会怎么做?

由于 Rails 配置如 production.rb 是在 ActiveRecord 初始化之前读取的,因此您需要使用回调:

Rails.application.configure do 
  ActiveSupport.on_load(:active_record) do
     config.custom_variable = SystemSettings.find_by(name: "Foo").value
  end
end

但是由于回调会在 ActiveRecord 准备好后执行,因此您不能立即使用它的值,这就是为什么您的方法可能存在缺陷 race conditions.

除非您正在构建像 CMS 这样的东西,您需要提供一个用户界面来编辑系统设置,否则您最好使用 environmental variables。它们可以立即从内存中获取,并且没有数据库查询的开销。