Activerecord Rails 4在模型中加载模型

Activerecord Rails 4在模型中加载模型,activerecord,ruby-on-rails-4,eager-loading,Activerecord,Ruby On Rails 4,Eager Loading,我有以下资料: class ObjectA < ActiveRecord::Base has_one :object_b end class ObjectB < ActiveRecord::Base belongs_to :object_a has_one :object_c end class ObjectC < ActiveRecord::Base belongs_to :object_b end class ObjectA

我有以下资料:

class ObjectA < ActiveRecord::Base
  has_one   :object_b
end

class ObjectB < ActiveRecord::Base
  belongs_to   :object_a
  has_one   :object_c
end

class ObjectC < ActiveRecord::Base
  belongs_to   :object_b
end
class ObjectA
因此,使用ObjectA.eager_load(:object_b)显然会立即加载ObjectB。 但是,我正试图在每次调用object\u a.object\u b.object\u c时,不必发出新的查询就可以加载整个层次结构


想法?

如果你像

ObjectA.includes(object_b: :object_c).where(...)
这将为匹配
where(…)
条件的每个
ObjectA
加载
ObjectA
的相关
ObjectB
和嵌套的
ObjectC

如果您希望避免在任何时候进行急切加载时重复上述查询格式,那么可以在
ObjectA
上创建一个类方法

class ObjectA < ActiveRecord::Base
  has_one   :object_b

  def self.with_related(conditions)
    includes(object_b: :object_c).where(conditions)
  end
end
class ObjectA
参考资料: