我有销售各种类型产品的卖家(绘画,歌曲,书籍等)。
我有一个购买表,其中包含使用product_id和product_type的多态产品关联,其中product_type将是Painting,Song,Book等。
我想对卖家进行查询,以获取已购买的所有产品的清单,但我明白这一点:
Purchase.joins(:产物).limit(10).offset(9000)
Hirb Error: Can not eagerly load the polymorphic association :product
答案 0 :(得分: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
答案 1 :(得分: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类中的产品关联是多态的,因此不知道在搜索中需要加入的所有表是什么。 ActiveRecord如何知道加入绘画,歌曲和书籍,但没有其他表格?它不知道,所以它无法进行连接。
答案 2 :(得分:0)
由于您确实有多个表继承,因此您可以在任何表中为每个产品记录提供带有多态外键的product表。使用产品表执行产品,卖家和购买之间的关系。如果您需要特定项目的详细信息,例如书名,请取消引用产品中的外键,并获取书籍记录。