我想在我的Rails项目中创建一个全局可访问的类,它还包含一些活动的记录结果集。
@settings = Settings.first
@locales = Locales.all
$websiteSettings = WebsiteSettings.new(@settings, @locales)
我应该在哪里创建这个类,初始化器是最好的地方吗?
我希望能够在我的控制器和视图中访问此类。
据我所知,如果数据库中的数据发生变化,我将不得不重新启动rails应用程序或更新这些全局实例。
答案 0 :(得分:0)
将其放入初始化程序并将其设置为global constant:
#config/initializers/settings.rb
module Settings
@settings = Settings.first
@locales = Locales.all
WEBSITE = WebsiteSettings.new(@settings, @locales)
end
这样您就可以在整个应用中访问Settings::WEBSITE
。
仅当您通过ActiveRecord
调用数据时才适用。
如果您没有通过数据库访问数据,那么您最好使用众多settings
宝石中的一个,或者直接将设置添加到Rails.config
class:< / p>
#config/application.rb
config.settings.title = "Test" #-> Rails.configuration.settings.title
-
顺便说一句,我强烈建议您重构代码;您正在进行3个db调用以获取应用程序的一系列设置。
当然,您可以将所有设置放在Settings
模型中,并围绕不同的区域设置:
#config/initializers/settings.rb
module Settings
SETTINGS = Settings.where(locale: :en)
end