在Rails中建模商店

时间:2012-05-03 02:55:15

标签: ruby-on-rails ruby-on-rails-3 activerecord mapping

想象一下商店模型,其中store可以包含多个items,每个item可以有不同的pricestore可以不同item(不同的商店可以有相同的项目,但价格不同)。

这正是商店在现实生活中的方式。

到目前为止,我已将storepriceStore: 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 作为模型。

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

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

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

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

{{1}}

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

然后,您可以为零售商表添加一个价格,即每个商店的每个商品。