关联表:使用Rails加入或包含

时间:2012-06-25 20:32:20

标签: ruby-on-rails join activerecord include

当涉及到rails和Active Record关联时,我感觉有点慢......我有两张桌子。

表= 戒指
使用foreign_key =>表= 变体 “ring_id”。

class Ring < ActiveRecord::Base
      has_many :variations
end

class Variation < ActiveRecord::Base
      belongs_to :ring
end

所以在我的“索引/列表”视图中,我希望显示所有环,以及两个变体,我认为可以通过一个SQL查询来执行此操作...但是,我尝试了连接和include方法,我想我只是不理解它们如何正常工作。

所以我的问题是,如何在我的控制器中编写一个查询,从“变量”中提取我的“标题”和“值”列值,并将它们组合成一个简单的对象以便于循环?或者我是否必须遍历所有环并在循环期间查找变化值?

感谢

2 个答案:

答案 0 :(得分:2)

在您的控制器中:

@rings = Ring.includes(:variations).all

在index.html.erb中:

@rings.each do |ring|
  ...
  ring.variations.each do |variation|
    ...
  end
end

查询的包含部分将阻止Rails在您循环播放时重复查询数据库,并在视图中呈现您的响铃和变体。

答案 1 :(得分:-1)

您需要使用includes方法:Ring.inclues(:variations)。然后,变量将与单个SQL查询中的环一起加载。

了解更多信息:http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations