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用户 有很多:项目用户 结束 类用户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