我正在一个系统中工作,该系统将列出产品的购买和销售。由于这些购买和销售的列表具有相同的信息 - unit_price和quantity - 我只考虑制作2个模型:Item和Listing。但是,如何在Item和Listing之间建立2个has_many关联?我在考虑多态关联,但我无法使其工作
移植
create_table :listings do |t|
t.integer :unit_price
t.integer :quantity
t.references :listable, polymorphic: true, index: true
t.timestamps
end
item.rb的
has_many :buys, as: :listable
has_many :sells, as: :listable
listing.rb
belongs_to :listable, polymorphic: true
我尝试在控制台上运行它并且它不起作用:
rails c
Item.create!
Item.first.buys
调用此错误
NameError: uninitialized constant Item::Buy
答案 0 :(得分:0)
在Listing
迁移中:
create_table :listings do |t|
t.integer :unit_price
t.integer :quantity
t.integer :item_id
t.integer :type
t.timestamps
end
现在在Item
模型中:
class Item < ActiveRecord::Base
has_many :buys, -> { where "type = 0" }, class_name: "Listing"
has_many :sells, -> { where "type = 1" }, class_name: "Listing"
end
type
字段用于表明商家信息:0
的值为buys
,1
的值为sells
。