ruby-on-rails - 使变量在整个应用程序中可用?

标签 ruby-on-rails ruby ruby-on-rails-3

在我的 Rails 3 应用程序中,我想像这样定义一个变量:

PERSONAL_DOMAINS = %w[
  @126.com
  @163.com
  @aim.com
  @aol.com
]

然后我希望能够在 user.rb 中使用它进行验证,如下所示:

return true if PERSONAL_DOMAINS.any? { |rule| "@#{domain}".include? rule }

我也想在另一个模型中使用它。

像这样:

domain_rules = [PERSONAL_DOMAINS]
domain_rules.each { |rule| return false if !domain.match(rule).nil? }

对于 Rails,您应该在哪里以及如何定义这个 PERSONAL_DOMAINS 列表? YML、配置、初始值设定项?那么如何正确使用呢?

谢谢

最佳答案

有两种方法我会考虑这样做假设值在不同的环境中不会改变,在这两种情况下我认为你应该把它放在一个初始化程序中,比如:

config/initializers/personal_ip_addresses.rb

然后你可以简单地拥有一个包含常量的文件:

  PERSONAL_DOMAINS = %w[
      @126.com
      @163.com
      @aim.com
      @aol.com
    ]

您可以像上面那样简单地使用它:

return true if PERSONAL_DOMAINS.any? { |rule| "@#{domain}".include? rule }

或者你想走配置路线:

YourApplicationClass::Application.config.personal_domains = %w[
      @126.com
      @163.com
      @aim.com
      @aol.com
    ]

你会像这样使用它:

Rails.configuration.personal_domains

就我个人而言,我尽量保持简单,并会采用常量。

关于ruby-on-rails - 使变量在整个应用程序中可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15624527/

相关文章:

ruby - each_with_index_do 索引从 1 开始

ruby-on-rails - 收到消息的访问次数?

ruby-on-rails - 在 rails 和 postgresql 中使用键值进行不区分大小写的搜索

ruby-on-rails - cucumber 中的http基本身份验证测试

ruby - Mac Ruby 卡在 2.6.3p62 上

ruby-on-rails-3 - 在哪里配置 Rails 3 cache_store?

ruby-on-rails-3 - 如何从 mina 部署脚本运行自定义 rake 任务

ruby-on-rails - 在 View 中显示来自 api 的 JSON 响应

ruby-on-rails - Ruby 数组构造

ruby-on-rails - 您如何构造一个 Rails 模型,其中两个属性需要与另一个模型共享相同的关联?