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
参考资料: