我有兩個型號Item
和User
。 Item
由User
創建並擁有。但Item
也擁有除擁有者以外的用戶。鋼軌多對多,一到多擁有
看來我需要項目和用戶之間的多對多關係。但是另外,我還需要一個擁有很多項目的用戶的一對多的所有權關係。
class User < ActiveRecord::Base
has_many :items, dependent: :destroy
has_and_belongs_to_many :items
end
class Item < ActiveRecord::Base
belongs_to :user
has_and_belongs_to_many :users
end
我已經建立了像這樣的遷移。
用於保存用戶和項目之間的許多連接的表格。
create_table :items_users, :id => false do |t|
t.column :item_id, :integer
t.column :user_id, :integer
end
除了一個Item
的由User
所有權。
add_reference :items, :user, index: true
add_foreign_key :items, :users
這意味着我可以item.user_id
訪問Item
的所有者。我還可以通過item.users
和user.items
訪問用戶和項目之間的多對多關係。
我不知道如何通過User
對象訪問User
擁有的項目。 User
擁有的物品應與user.items
的多對多關係中的物品不同。
我覺得我正在構造一切錯誤。我非常新的軌道,我很困惑。在rails中完成這個操作的正確方法是什麼?
在現實世界中,其他用戶關係是什麼?原因是你可以根據情景對其進行不同的構造:或者與同一模型保持兩個單獨關係,或者與連接表有一個多對多關係,描述該用戶對該特定項目的「角色」(所以你'有一個「創造者」的角色,以及任何你需要的東西)。然後,您可以在模型中定義不同的'has_many'關係,根據該角色進行過濾。 –