我的问题看似简单,但一直很难以捉摸。我想要一个可以在应用程序中的任何位置调用的值 - 它是我们用于模型中验证的最小值,我们希望通知用户该值等。
到目前为止,我已经完成了以下工作:
在config / initializers中,我创建了一个新的.rb文件(根据我在另一个线程上找到的建议):
minimum = 15
只有在启动rails服务器后才能找到它。
我发现一个奇怪的建议是将en.yml中的值设置为最小值:15,与上述相同。
显然,应用程序助手和控制器无法帮助,因为我需要模型中的值。但我确实找到了一个解决方案,即将它放在config / application.rb中的类Application中:
config.after_initialize do
::Minimum = 15
end
然后将其称为:
MyApp::Application::Minimum
显然,这个解决方案虽然有效但并不理想。如果我能找到一种方法将MyApp :: Application :: Minimum别名为“最小”,我会完全满意,但是从初学者那里完成它是一个更好的解决方案。
答案 0 :(得分:1)
如果需要,您可以在模型中粘贴某些东西并从任何地方调用它:
Couriers = %w[TNT UPS RoyalMail Bike Hand Pigeon Other]
但我更喜欢将它们放在yaml文件中。
在configs目录中创建一个config.yml文件,并将你的vars放在那里:
defaults: &defaults
node_1: '10.8'
node_2: '10.9'
node_3: '10.0'
whatever: 1
thereis: 2
development:
<<: *defaults
playground:
<<: *defaults
production:
<<: *defaults
poststaging:
<<: *defaults
test:
<<: *defaults
在初始化程序目录中使用类似的东西加载配置文件。在/ config / initializers中创建一个名为'load_vars.rb'的文件,并将以下内容放在那里:
SETTINGS = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env]
尽管如此,您必须重新启动服务器。
- 编辑 -
要使用这些变量,您可以从模型,控制器,视图中加载类似的内容:
SETTINGS['var_1']