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 

없는 경우 설정 변수의 존재를 확인하는 적절한 방법은 무엇입니까 "정의는?"?

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

답변

4

당신이 방법을 확인하려면

은, 문자 그대로의 의미에서 정의 당신이 방법은 nil이 아닌 다른 뭔가를 반환하는 경우 확인하려면 respond_to

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

을 사용하는 것입니다, 당신은 몇 가지 옵션이 있습니다

+1

Thanks_steel ...'respond_to?'는 완벽하게 작동합니다. 나머지는 trackable_models가 정의되었다고 가정 할 때 유용합니다. 그렇지 않으면'Rails.applications.config.trackable_models'를 호출하면 "undefined method 'trackable_models'"가됩니다 –

관련 문제