一种方法是有一个单独的ProjectOwner
和ProjectUser
模型两者都是继承于User
模型。 和has_and_belongs_to_manyProject
和ProjectUser
模型之间的关联。
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
这在我看来是一个'has_and_belongs_to_many”的关系。 – Daiku