2

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

表 =
表 =带有 foreign_key => "ring_id" 的变体。

class Ring < ActiveRecord::Base
      has_many :variations
end

class Variation < ActiveRecord::Base
      belongs_to :ring
end

所以在我的“索引/列表”视图中,我想显示所有的环,以及两种变体,我认为可以通过一个 SQL 查询来做到这一点......但是,我已经尝试了连接和包含方法,我想我只是不了解它们如何正常工作。

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

谢谢

4

2 回答 2

2

在您的控制器中:

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

在 index.html.erb 中:

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

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

于 2012-06-25T20:40:53.960 回答
-1

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

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

于 2012-06-25T20:38:57.470 回答