0

さまざまな種類の製品 (絵画、歌、本など) を販売する販売者がいます。

product_id と product_type を使用したポリモーフィックな製品関連付けを持つ purchases テーブルがあります。ここで、product_type は絵画、歌、本などになります。

販売者にクエリを実行して、購入したすべての製品のリストを取得したいのですが、次のようになります。

Purchase.joins(:product).limit(10).offset(9000)

Hirb Error: Can not eagerly load the polymorphic association :product
4

3 に答える 3

1

これが私が今やっている方法です:

class Seller < User
  def sales
    Purchase.where("(product_id in (?) AND product_type = 'Book') OR (product_id IN (?) AND product_type = 'Song')", books.collect(&:id), songs.collect(&:id))
  end
end
于 2012-05-01T17:56:34.437 に答える
0

実際には複数のテーブル継承があるため、どのテーブルの各製品レコードにもポリモーフィック外部キーを持つ製品テーブルを作成できます。製品テーブルを使用して、製品、販売者、および購入の間の関係を実行します。書籍名など、特定のプロジェクトの詳細が必要な場合は、製品の外部キーを逆参照して、書籍の記録を取得します。

于 2012-05-01T18:52:20.600 に答える
0

あなたは述べていませんが、次のようなものが必要です:

class Purchase
  belongs_to :product, :polymorphic => true
end
class Painting
  has_many :purchases, :as => :product
end
class Song
  has_many :purchases, :as => :product
end
class Book
  has_many :purchases, :as => :product
end

Purchase クラスの :product 関連付けは多態的であるため、検索で結合する必要があるすべてのテーブルが何であるかはわかりません。ActiveRecord は、絵画、歌、本を結合し、他のテーブルを結合しないことをどのように認識しますか? 知らないのでジョインできません。

于 2012-04-30T19:48:06.000 に答える