2015-09-02 104 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看看我更新的答案。如果您有任何其他问题,请告诉我。 –

相关问题