导轨 4.2.0 / Ruby 2.2.1
defined?
用于检查具有给定名称的类是否存在时,我面临不一致的行为。我想避免使用谓词方法来挽救异常。但如下所示,它返回的结果不一致。这种行为导致我在控制器中编写的一些代码失败。
$ rails c
Loading development environment (Rails 4.2.0)
2.2.1 :001 > defined?(User)
=> "constant"
2.2.1 :002 > defined?(AuthenticationToken)
=> nil
2.2.1 :003 > AuthenticationToken
=> AuthenticationToken (call 'AuthenticationToken.connection' to establish a connection)
2.2.1 :004 > defined?(AuthenticationToken)
=> "constant"
我也尝试过使用Kernel.const_defined?
但发现相同的不一致行为。
$ rails c
Loading development environment (Rails 4.2.0)
2.2.1 :001 > Kernel.const_defined?('Role')
=> false
2.2.1 :002 > Kernel.const_defined?('AuthenticationToken')
=> false
2.2.1 :003 > AuthenticationToken
=> AuthenticationToken (call 'AuthenticationToken.connection' to establish a connection)
2.2.1 :004 > Kernel.const_defined?('AuthenticationToken')
=> true
是否有任何标准方法可以使该代码以一致的方式运行?
谢谢。