Ruby on rails 你有很多:通过或你和你属于很多或其他什么?
我有一个项目和用户模型Ruby on rails 你有很多:通过或你和你属于很多或其他什么?,ruby-on-rails,ruby-on-rails-4,activerecord,model-view-controller,associations,Ruby On Rails,Ruby On Rails 4,Activerecord,Model View Controller,Associations,我有一个项目和用户模型 class Project < ActiveRecord::Base belongs_to :proposer, class_name: "User", foreign_key: :user_id end class User < ActiveRecord::Base has_many :projects end class项目
class Project < ActiveRecord::Base
belongs_to :proposer, class_name: "User", foreign_key: :user_id
end
class User < ActiveRecord::Base
has_many :projects
end
class项目
我希望有一个用户谁是项目的提案人,并拥有该项目。然后还有其他用户也拥有这个项目。例如,用户/投标人将其添加为所有者,但他们不是投标人
我将如何对此进行建模?我目前只与投标人建立了关系。这有点令人困惑,因为我仍在学习更高级的关联。类项目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
拥有多个:用户,:通过=>project\u用户
有很多:项目用户
结束
类用户user\u id
和project\u id
的ProjectUser
表中,添加一个额外的列role
。此角色字段将定义用户
角色,他是提案人还是通常只拥有项目
然后,如果您想找到项目提议人,那么
project.project\u users.where(:role=>“proposer”)
我实际上最终做了这件事(不确定这是否是长期的好解决方案):
class项目
我有一个包含一个关系的连接表,然后我有一个直接外键,没有包含提议者关系的连接表。到目前为止,它似乎奏效了。虽然我认为@Emu的上/下解决方案更好,但如果遇到任何问题,我可能会回来换成这个解决方案
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