【问题标题】:How do I check if a Rails.application.config variable is defined?如何检查是否定义了 Rails.application.config 变量?
【发布时间】:2017-01-09 22:13:22
【问题描述】:

即使 Rails.application.config.trackable_models 返回一个完整的数组,defined?(Rails.application.config.trackable_models) 返回 nil。

Rails.application.config.trackable_models # => ["NewsItem", "ContentPage", "Event"]
defined?(Rails.application.config.trackable_models): # => nil 

以同样的方式设置局部变量就可以了:

foo = ["x"]
defined?(foo) # => local-variable

如果未“定义”,检查配置变量是否存在的正确方法是什么?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4


    【解决方案1】:

    如果要检查字面意义上定义的方法,使用respond_to

    Rails.application.config.respond_to?(:trackable_models)
    

    如果您想检查该方法是否返回 nil 以外的其他内容,您有一些选择:

    tm = Rails.application.config.trackable_models
    tm.nil?
    tm.presence || 'default value'
    tm.present?
    tm.blank?
    

    【讨论】:

    • 谢谢@steel...respond_to? 完美。假设 trackable_models 已定义,其余部分很有用,否则对 Rails.applications.config.trackable_models 的任何调用都会导致“未定义的方法 'trackable_models'”
    猜你喜欢
    • 2010-09-22
    • 1970-01-01
    • 2015-05-01
    • 2012-10-07
    • 2021-04-21
    • 2021-10-03
    • 1970-01-01
    • 2012-01-20
    相关资源
    最近更新 更多