Ruby 活动记录关系

Ruby Active Record Relational

我还是新手,逻辑还是不太对。

目前,我有:

  1. 用户有很多产品。
  2. 产品有 1 个用户具有价格属性。

我正在尝试添加:

  1. 用户可以对其他用户销售的产品提供 1 个价格。用户可以提供多个产品的价格。
  2. 一个产品可以有多个用户提供的价格。

我目前有:

class User < ActiveRecord::Base
 has_many :products
 has_many :offered_prices
end

class Product < ActiveRecord::Base
 belongs_to :user
 has_many :offered_prices
end 

这就是我到目前为止所做的。它似乎仍然不太正确,因为我同时很困惑。非常感激您的帮忙! :)

定义三个模型:

User | OfferedPrice | Product

它们之间的关联将是:

class User < ActiveRecord::Base
  has_many :products
  has_many :offered_prices, through: :products
end

class OfferedPrice < ActiveRecord::Base
  belongs_to :user
  belongs_to :product

  # To make sure a user can offer price once for against a product
  validates_uniqueness_of :price, scope: [:user, :product]
end

class Product < ActiveRecord::Base
  has_many :offered_prices
  has_many :user, through: :offered_prices
end