首页 > 解决方案 > 在 Rails 5 中检查对象是否为 ApplicationRecord

问题描述

鉴于这种

module Site
  class Translation < ApplicationRecord

为什么此代码返回 false?

2.4.0 :094 > Site::Translation.is_a? ApplicationRecord
 => false 

如果

2.4.0 :093 > Site::Translation.superclass
 => ApplicationRecord(abstract) 

什么是Site::Translation.is_a?真实的?

标签: ruby-on-railsruby-on-rails-5.1

解决方案


因为Site::Translation对象是类,所以它属于Class类,它不继承自ApplicationRecord. 如果您在此类的实际实例上尝试相同的技巧,它将返回true,如您所料:

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

推荐阅读