当涉及到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方法,我想我只是不理解它们如何正常工作。
所以我的问题是,如何在我的控制器中编写一个查询,从“变量”中提取我的“标题”和“值”列值,并将它们组合成一个简单的对象以便于循环?或者我是否必须遍历所有环并在循环期间查找变化值?
感谢
答案 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