想象一下商店模型,其中store
可以包含多个items
,每个item
可以有不同的price
,store
可以不同item
(不同的商店可以有相同的项目,但价格不同)。
这正是商店在现实生活中的方式。
到目前为止,我已将store
,price
和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
作为模型。
我如何在Rails中建模这种关联?添加/删除模型不是问题。
我还需要这个关联来轻松地让我做这样的查询:
“给定一个项目(或项目的ID),返回包含该项目的商店列表,包括其价格”。
到目前为止,我有以下关联:
{{1}}
答案 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
然后,您可以为零售商表添加一个价格,即每个商店的每个商品。