つまり、注文、アイテム、ユーザーの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)。Orderモデルに:user_idを含む新しい列を作成したいと思います。しかし、アイテムにはすでにユーザーとの関連付けがあるため、これは正しくありませんか?データベースにuser_idフィールドを追加しなくても、必要なものを取得できる、ファンシーな関係はありますか?
私は技術的に言うことができます:
User
has_many :orders, :through => :items
Order
has_many :users, :through => :items
しかし、これは私にとってハックのように感じます。ユーザーを注文に関連付けるには、order.users.firstと言う必要があります(注文にはhas_many:itemsがありますが、すべてのアイテムには1人のユーザーしかいません)
また、アイテムが作成され、注文に関連付けられていない期間があるため、アイテムとユーザーの関連付けを削除することはできません。