2

Rails と Active Record の関連付けに関しては、少し遅い気がします... 2 つのテーブルがあります。

テーブル = Rings
テーブル = foreign_key => "ring_id" のバリエーション。

class Ring < ActiveRecord::Base
      has_many :variations
end

class Variation < ActiveRecord::Base
      belongs_to :ring
end

したがって、「インデックス/リスト」ビューで、すべてのリングと両方のバリエーションを表示したいのですが、1 つの SQL クエリでこれを行うことができると考えていました...ただし、結合とインクルードを試しましたメソッドと私は、それらがどのように適切に機能するかを理解していないと思います。

だから私の質問は、「タイトル」と「値」列の値を「バリエーション」から取得し、それらを1つの単純なオブジェクトに組み合わせて簡単にループできるようにするクエリをコントローラーにどのように作成するかです。または、すべてのリングをループして、ループ中に変動値を調べる必要がありますか?

ありがとう

4

2 に答える 2

2

コントローラーで:

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

index.html.erb では:

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

クエリの include 部分は、ビューでリングとバリエーションをループしてレンダリングするときに、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 に答える