假设我想确定Admin
是否继承自ActiveRecord::Base
。一种方法是使用Admin.new.kind_of? ActiveRecord::Base
,但它会实例化一个未使用的Admin
对象。
有没有一种简单的方法可以不用创建Admin
对象就能做到这一点?
谢谢
发布于 2011-03-07 02:57:26
当然,只需比较这两个类:
if Admin < ActiveRecord::Base
# ...
end
有趣的是,如果Admin
从AR::Base
继承,则Module#<
将返回true
,如果不是这样,它将返回false
或nil
。false
意味着它是相反的,而nil
用于不相关的类(例如,String < Range
返回nil
)。
发布于 2011-03-07 02:59:52
这很简单:
Admin < ActiveRecord::Base
=> true
发布于 2011-03-07 02:57:27
Admin.ancestors.includes? ActiveRecord::Base
对于直系祖先,您还可以使用
Admin.superclass == ActiveRecord::Base
https://stackoverflow.com/questions/5212657
复制相似问题