在我的應用程序中,我有一個用戶模型和一個項目模型。用戶has_many分配,每個項目都屬於用戶。但是,每個項目都有一個所有者,創建它的用戶,我希望所有者能夠與其他人分享(以便項目可以隨其他用戶的帳戶一起顯示)。我想象不得不使用has_many:through,並用user_id和project_id設置一個projects_users表。我想這將是最終結果?記錄如何屬於單個用戶,但也有多個「輔助」用戶?
Project.first.user
# The creator of the project
=> #<User id: 1, name: 'andrew', etc...>
Project.first.users
# The users that the creator chose to share it with
=> [#<User id: 2 ...>, #<User id: 3 ...>]
我一直工作在這一點,我創建了一個USER_ID和PROJECT_ID列SharedProject模型:
class SharedProject < ActiveRecord::Base
belongs_to :user
belongs_to :project
end
我想打電話給兩個user.projects和user.shared_projects ,但我不知道如何讓shared_projects返回項目記錄,而不是來自shared_projects表中的記錄。我不能做has_many :projects, :through => :shared_projects
,因爲那樣我就無法返回用戶創建的項目。
class User < ActiveRecord::Base
has_many :projects # Calling user.projects returns the projects that user created
has_many :shared_projects # How to get user.shared_projects to return project records?
end