2016-09-01 3 views
1

Rails.application.config.trackable_modelsはフル配列を返しますが、defined?(Rails.application.config.trackable_models)はnilを返します。同じようにローカル変数を設定するRails.application.config変数が定義されているかどうかを確認するにはどうすればよいですか?

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

は大丈夫です:

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

ない場合は設定変数の存在をチェックする適切な方法は何である「定義されましたか?」?

答えて

4

あなたが方法を確認したい場合は文字通りの意味で定義されている、あなたは方法がnil以外の何かを返すかどうかを確認したい場合は、あなたには、いくつかのオプションがありrespond_to

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

を使用します。

tm = Rails.applications.config.trackable_models 
tm.nil? 
tm.presence || 'default value' 
tm.present? 
tm.blank? 
+1

ありがとう@steel ... 'respond_to?'は完璧に動作します。残りはtrackable_modelsが定義されていると仮定すると便利です。そうでなければ 'Rails.applications.config.trackable_models'を呼び出すと"未定義のメソッド 'trackable_models'が返されます –

関連する問題