默认情况下不能这样做。这可能会在检查对象时产生太多问题和副作用。但是你可以自己扩展inspect
像这样的东西:
class A < ActiveRecord::Base
...
def inspect
[super, bs.inspect].join("\n")
end
end
不过,请注意,这不是很聪明,因为它每次都会强制bs
加载您检查的A
实例。因此,也许你想成为更聪明,做这样的事情:
def inspect
[super, bs.loaded? ? bs.inspect : nil].compact.join("\n")
end
,如果它已经(与:include
例如)预装这只会检查bs
。
或者您可能想创建一个super_inspect
,而不是自动执行所有操作。你可以用类似延长ActiveRecord::Base
:
class ActiveRecord::Base
def deep_inspect
([inspect] + self.class.reflect_on_all_associations.map { |a|
self.send(a.name).inspect if self.send(a.name).loaded?
}).compact.join("\n ")
end
end
这会自动查找所有关联与reflect_on_all_associations
,并且如果关联加载它会调用该inspect
。
现在,您可以修改上述代码,但是您想要创建自己的自定义检查,或者只需要扩展当前的检查。任何事情都可以用一点代码。