【发布时间】:2013-02-10 23:50:07
【问题描述】:
我正在尝试找出适合我的模型的 ActiveRecord 关联。我想创建一个非常准系统的电子商务网站。我想拥有一个升级和维修产品的系统,因此访问用户的订单历史记录很重要。
我目前的设置如下:
用户
has_many :products, :through => :orders
has_many :orders, :dependent => :destroy
订单
belongs_to :user
has_many :products
产品
belongs_to :orders
我的第一个问题是这有意义吗?我关心 Products 的 belongs_to :orders 部分,因为我想确保一个产品可以成为许多不同订单的一部分(出于显而易见的原因)。如果这是错误/正确的,正确的关系需要哪些必要的迁移?
提前致谢。
【问题讨论】:
-
您需要在 Product 和 Order 模型之间建立多对多的关系。不想使用连接表可以使用
has_and_belongs_to_many关联,否则只有一个选项has_many :through -
如果我使用 HABTM,那么语义听起来不正确,但我明白你的意思。看起来我想要我认为不存在的“belongs_to_many”。谢谢你们的帮助。
-
没有。不需要
belongs_to_many,因为它类似于现有的has_many :through和HABTM。belongs_to用于我们保留foreign key的关联一侧。那么,您如何处理belongs_to_many?必须有另一个连接表来处理这个问题,如果是这种情况,那么可以通过现有的many to many关联来完成。
标签: ruby-on-rails activerecord associations