多个has_many关联到同一个Model

时间:2015-02-12 18:31:05

标签: ruby-on-rails

我正在一个系统中工作,该系统将列出产品的购买和销售。由于这些购买和销售的列表具有相同的信息 - 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

1 个答案:

答案 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的值为buys1的值为sells