也许我今天的吸收有点慢(我甚至不能说出一个合适的标题),但我想解决这个问题:
我想从my previous question扩展我的模型。
超市可以容纳许多产品,每种产品都可以在许多超市销售。该关联是通过Supply-model构建的。
现在我想扩展这个模型: 假设我有一个产品 Apple (水果)。它可以有不同的品种:即“Granny Smith”,“Golden Delicious”等。
在超市1 我可以买
在超市2 我可以买
更常见的问题是让不同的公司提供相同的产品: Cornflakes 可由 Kellog的或 General Mills 提供在这些公司生产许多产品的同时:
超市1销售:
超市2销售:
我想我需要一个额外的模型来连接品牌(上面的模型中的品种)和产品(玉米片/苹果)。
我还需要创建哪些模型以及如何将其链接起来?我想像多态关联,但我真的没有线索...
答案 0 :(得分:0)
您可能希望在超市和详细产品之间建立多对多的关系。详细的产品将具有通用产品的外键。
假设您将一般产品型号命名为(复数:属)。 [随意找一个更好的名字。]
class Genus
has_many :products
end
class Brand
has_many :products
end
class Product
belongs_to :genus
belongs_to :brand
has_many :supplies
has_many :supermarkets, :through => :supplies
end
class Supply
belongs_to :product
belongs_to :supermarket
end
class Supermarket
has_many :supplies
has_many :products, :through => :supplies
end
Product Genus
Granny Smith Apple Apple
Golden Delicious Apple Apple
Braeburn Apple Apple
Macintosh Apple Apple
Kellog's Cornflakes Cornflakes
GM Cornflakes Cornflakes
Kellog's Rice Krispies Rice Krispies
您可能还会在Product to brand中包含一个外键,以存储Kellog或General Mills。