【发布时间】:2017-07-18 00:59:15
【问题描述】:
我有一个字符串,我只想检查它是否是一个“模型”......所以在搜索后我找到了一种方法:
'any_name'.classify.constantize
但是...当它不是有效的模型名称时,它会抛出以下错误:
NameError(错误的常量名称 AnyName):
所以我尝试执行以下操作:
if Object.const_defined?('AnyName')
#...
end
# I also tried this:
Object.const_get('AnyName')
但同样,以上两个选项都返回相同的错误:
NameError(错误的常量名称 AnyName):
const_defined 不应该只返回真/假而不是抛出错误?
目前,我发现了这个丑陋的解决方法:
'any_name'.classify.constantize rescue nil
但是 AFAIK 认为这不是一个好的做法(rubocop 也在声称这一点)。
那么,我的问题是……有没有一种安全的方法可以做到这一点?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-5 ruby-on-rails-5.1