我有两个模型:Place和Subfilter
class Place < ActiveRecord::Base
belongs_to :subfilter
end
class Subfilter < ActiveRecord::Base
has_many :places
end
以下两个查询返回与Place.all
Place.joins(:subfilter)
Place.includes(:subfilter)
帮助!如果您需要更多信息,请告诉我。
答案 0 :(得分:0)
它应该产生相同的效果,但是这两个声明并不完全相同。
Place.joins(:subfilter)
生成以下SQL
SELECT places.* FROM places INNER JOIN subfilters ON subfilters.place_id = places.id
Place.includes(:subfilter)
生成2个SQL语句
SELECT places.* FROM places
和
SELECT subfilters.* FROM subfilters
包含有助于急切加载,即如果你想循环遍历某些地方,例如
@places.each do |place|
puts place.subfilter.name
end
您可以在加入表格和热切加载的情况下阅读更多相关信息。 http://guides.rubyonrails.org/active_record_querying.html#joining-tables