我的问题看似简单,但却难以捉摸。我想要一个可以在应用程序中任何地方调用的值——这是我们在模型中用于验证的最小值,我们希望将该值通知用户,等等。
到目前为止,我已经做了以下工作:
在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别名为"Minimum",我会完全满意,但据我所知,在初始化器中完成它是一个更好的解决方案。
如果你愿意,你可以在模型中粘贴一些东西,并从任何地方调用它:
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
在initializers目录中使用类似的方法加载配置文件。在/config/initializers中创建一个名为"load_vars.rb"的文件,并在其中放入以下内容:
SETTINGS = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env]
不过,在更改这些之后,您必须重新启动服务器。
--编辑--
要使用这些变量,你可以从你的模型、控制器、视图中加载这样的东西:
SETTINGS['var_1']