Mel*_*lon 19 ruby-on-rails ruby-on-rails-3
ActiveRecord查询中" 包含 "和" 连接 " 之间有什么区别?任何人都可以用以下两个相关模型向我解释?
class Car < ActiveRecord::Base
belongs_to :store
end
class Store < ActiveRecord::Base
belongs_to :owner
has_one :car
end
Run Code Online (Sandbox Code Playgroud)
Mic*_*are 35
stores = Store.joins(:car)
Run Code Online (Sandbox Code Playgroud)
这将返回所有有车的商店.stores[0].car将导致另一个查询.
stores = Store.includes(:car)
Run Code Online (Sandbox Code Playgroud)
这将返回所有商店,汽车或没有汽车.stores[0].car会不会导致另一个查询.
stores = Store.includes(:car).joins(:car)
Run Code Online (Sandbox Code Playgroud)
这将返回所有商店的汽车.stores[0].car会不会导致另一个查询.我不会建议这种has_many关系,但它适用于has_one.
:joins 返回只读对象,:includes 不返回
:joins 使用内连接, :includes 使用外连接。
:includes 的主要原因是预先加载,以避免使用单独查询加载每个对象的属性的 N+1 问题。
| 归档时间: |
|
| 查看次数: |
10703 次 |
| 最近记录: |