2015-09-02 103 views
1

我在Rails中有一個模型用戶和項目。一個項目有一個所有者(用戶)和多個工作人員(用戶)。 我曾嘗試這種模式Rails中兩個模型之間的多重關係

class Project < ActiveRecord::Base 
    belongs_to :owner, class_name: "User" 
    has_many :users 

end 

class User < ActiveRecord::Base 
    has_secure_password 

    has_many :projects 
end 

但隨後無法把值到記錄的關聯。有人可以建議我該怎麼做。 (我需要什麼項目用戶擁有,運作上,項目的所有者和誰在裏面工作的人) 感謝

設計的車型
+0

這在我看來是一個'has_and_belongs_to_many」的關係。 – Daiku

回答

2

一種方法是有一個單獨的ProjectOwnerProjectUser模型兩者都是繼承於User模型。 和has_and_belongs_to_manyProjectProjectUser模型之間的關聯。

class Project < ActiveRecord::Base 
    belongs_to :project_owner 
    has_and_belongs_to_many :project_users 
end 

class User < ActiveRecord::Base 
    has_secure_password 
    # other common attributes here 
end 

class ProjectOwner < User 
    has_many :projects 
end 

class ProjectUser < User 
    has_and_belongs_to_many :projects 
end 

projects表中添加project_owner_id列。

創建一個連接表project_users_projects這將是這樣的:

create_table :project_users_projects, id: false do |t| 
    t.belongs_to :project_user, index: true 
    t.belongs_to :project, index: true 
end 

然後,你就可以做這樣的事情:

project_owner = project.project_owner 
project_owner_projects = project_owner.projects 
project_user_projects = project_user.projects 
project_users = project.project_users 
+0

如何向其中添加數據並從中提取數據。對不起,我剛剛開始使用ruby – DarkCoderRises

+0

好吧,我會盡快更新答案。 –

+0

@HARSHILGOEL看看我更新的答案。如果您有任何其他問題,請告訴我。 –

相關問題