如何在不在Ruby中实例化A对象的情况下确定A类是否继承自B类?

Bri*_*ian 18 ruby reflection inheritance ruby-on-rails

假设我想确定是否Admin继承自ActiveRecord::Base.一种方法是这样做Admin.new.kind_of? ActiveRecord::Base,但是实例化一个未使用的Admin对象.

有没有创建Admin对象的简单方法?

谢谢

Mar*_*une 27

当然,只需比较两个类:

if Admin < ActiveRecord::Base
  # ...
end
Run Code Online (Sandbox Code Playgroud)

有趣的是,要注意的是,虽然Module#<将返回true如果Admin从继承AR::Base,它将返回falsenil如果是这样的情况并非如此.false意味着它是相反的,而nil不是相关的类(例如String < Range返回nil).

  • 如果您正在寻找文档,那么类Class派生自Module,所以:http://www.ruby-doc.org/core-1.8.7/classes/Module.html#M000206 (2认同)

Jul*_*her 8

这很简单:

Admin < ActiveRecord::Base
=> true
Run Code Online (Sandbox Code Playgroud)