1

我的问题看似简单,但一直难以捉摸。我想要一个可以在应用程序的任何地方调用的值——它是我们在模型中用于验证的最小值,我们想通知用户该值等等。

到目前为止,我已经完成了以下工作:

在 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 别名为“最小值”,我将完全满意,但据我所知,在初始化程序中完成它是一个更好的解决方案。

4

1 回答 1

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']
于 2012-12-16T19:30:03.073 回答