所以这可能是非常糟糕的形式。我对rails比较陌生。我不知道。
我有一个项目模型,我希望有很多所有者(可以读写所有内容)和许多合作者(可以读写一些东西)。
在我的 project.rb 文件中,我有:
has_many :project_user_relationships, :dependent => :destroy
has_many :collaborators, :through => :project_user_relationships, :source => :user
has_many :project_owners_relationships, :class_name => "ProjectUserRelationship", :foreign_key => "project_id",
:before_add => Proc.new { |p,owner_r| owner_r.owner = true }, :conditions => "`project_user_relationships`.owner = true"
has_many :owners, :through => :project_owners_relationships, :source => :user
所以这工作得相当好。如果我添加一个新所有者,该用户也是我想要的合作者。我不确定如何解决的问题是,如果我添加一个已经是协作者的用户作为所有者,我会在连接表中获得两个条目。我希望它只是修改已经存在的记录。我怎么做?