检查对象是否为 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,所以属于Classclass,不继承ApplicationRecord。如果您对这个 class 的实际实例尝试相同的技巧,它将 return true,如您所料:

Site::Translation.new.is_a?(ApplicationRecord)
# => true