检查对象是否为 Rails 中的 ApplicationRecord 5
Checking if an object is an ApplicationRecord in Rails 5
鉴于此
module Site
class Translation < ApplicationRecord
为什么此代码 return 错误?
2.4.0 :094 > Site::Translation.is_a? ApplicationRecord
=> false
如果
2.4.0 :093 > Site::Translation.superclass
=> ApplicationRecord(abstract)
Site::Translation.is_a?
响应 true 是什么?
因为Site::Translation
对象是class,所以属于Class
class,不继承ApplicationRecord
。如果您对这个 class 的实际实例尝试相同的技巧,它将 return true
,如您所料:
Site::Translation.new.is_a?(ApplicationRecord)
# => true
鉴于此
module Site
class Translation < ApplicationRecord
为什么此代码 return 错误?
2.4.0 :094 > Site::Translation.is_a? ApplicationRecord
=> false
如果
2.4.0 :093 > Site::Translation.superclass
=> ApplicationRecord(abstract)
Site::Translation.is_a?
响应 true 是什么?
因为Site::Translation
对象是class,所以属于Class
class,不继承ApplicationRecord
。如果您对这个 class 的实际实例尝试相同的技巧,它将 return true
,如您所料:
Site::Translation.new.is_a?(ApplicationRecord)
# => true