Rails 4活动记录连接和包括不工作

时间:2014-05-20 21:35:23

标签: ruby-on-rails activerecord join ruby-on-rails-4 model-associations

我有两个模型:Place和Subfilter

class Place < ActiveRecord::Base
  belongs_to :subfilter
end

class Subfilter < ActiveRecord::Base
  has_many :places
end

以下两个查询返回与Place.all

相同的值
  1. Place.joins(:subfilter)
  2. Place.includes(:subfilter)
  3. 帮助!如果您需要更多信息,请告诉我。

1 个答案:

答案 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