我有一个项目和用户模型
class Project < ActiveRecord::Base
belongs_to :proposer, class_name: "User", foreign_key: :user_id
end
class User < ActiveRecord::Base
has_many :projects
end
我希望有一个用户是项目提议者并拥有该项目。然后还有其他用户也拥有该项目。例如,用户/提议者将它们添加为所有者,但它们不是提议者。
我将如何建模?我目前只建立了提议者关系。这有点令人困惑,因为我还在学习更高级的协会。
答案 0 :(得分:0)
class Project < ActiveRecord::Base
has_many :users, :through => project_users
has_many :project_users
end
class User < ActiveRecord::Base
has_many :projects, :through => project_users
has_many :project_users
end
现在,在ProjectUser
表格中user_id
和project_id
添加了一个额外的列role
。此角色字段将定义user
角色,是提议者还是通常只是拥有项目。
然后,如果您想找到项目提议者,那么project.project_users.where(:role => 'proposer')
答案 1 :(得分:0)
我实际上最终做到了这一点(不确定它是否是长期良好的解决方案):
class Project < ActiveRecord::Base
belongs_to :proposer, class_name: "User", foreign_key: :user_id
has_many :propojectships
has_many :users, through: :projectships
end
class User < ActiveRecord::Base
has_many :projectships
has_many :projects, through: :projectships
has_many :projects
end
我有一个连接表Projectships,它拥有一个关系,然后我有直接的外键,没有连接表,它保存了提议者的关系。它似乎到目前为止工作。虽然我认为@Emu上面/下面的解决方案更好,但如果我遇到任何问题,我可以回过头来改变它。