在我的 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/