所以我有 3 个模型:订单、项目和用户。
User
has_many :items
Order
has_many :items
Item
belongs_to :user
belongs_to :order
我的问题是:我还想关联 User 和 Order 模型(比如有一个关联:Order :belongs_to :user,User has_many :orders)。我想在包含 :user_id 的 Order 模型中创建一个新列。但这是不正确的,因为 Item 已经与用户关联了吗?是否有一种奇特的关系可以让我得到我需要的东西,而无需在数据库中添加额外的 user_id 字段?
我可以从技术上说:
User
has_many :orders, :through => :items
Order
has_many :users, :through => :items
但这对我来说就像一个黑客。为了让用户与订单相关联,我不得不说 order.users.first (订单 has_many :items,但所有项目都只有一个用户)
另外顺便说一句,我无法摆脱项目与用户的关联,因为在一段时间内创建了项目并且与订单无关。