0

想象一个商店模型,其中一个store可以有很多items,每个item可以有不同price的不同store(不同的商店可以有相同的商品但价格不同)。

这正是商店在现实生活中的样子。

到目前为止,我有itemstoreprice作为模型。

我将如何在 Rails 中为这种关联建模?添加/删除模型不是问题。

我还需要这个关联来轻松地进行这样的查询:

“给定一个项目(或一个项目的 ID),返回包含该项目的商店列表,包括它们的价格”。

到目前为止,我有以下关联:

Store:
  has_and_belongs_to_many :items
Item: 
  has_and_belongs_to_many :stores
  has_and_belongs_to_many :prices
Price:
  has_and_belongs_to_many :items
4

2 回答 2

2

第四个模型 StorePrices 怎么样,它允许建立has_many :through关系。

Item:
  has_many :store_prices
  has_many :stores, :through => :store_prices

Store:
  has_many :store_prices
  has_many :items, :through => :store_prices

StorePrice:
  belongs_to :store
  belongs_to :item

store_prices 表如下所示:

id -> integer
store_id -> integer
item_id -> integer
price -> decimal

您可以像这样获取给定项目的商店:

stores = item.stores

第一家商店的商品价格:

price = item.store_prices.first.price
于 2012-05-03T03:19:21.680 回答
0

而不是使用 has_and_belongs_to_many 我会使用 has_many :through

一家商店零售商品

Store
has_many :items through :retails
has_many :retails

Retail
belongs_to :store
belongs_to :item

Item
has_many :stores through :retails
has_many :retails

然后,您可以在零售表中添加一个价格,该价格将是每个商店的每件商品。

于 2012-05-03T03:16:14.520 回答