Ruby on rails 一条记录怎么可能只属于一个用户,但也有多个用户;“中学”;用户?

Ruby on rails 一条记录怎么可能只属于一个用户,但也有多个用户;“中学”;用户?,ruby-on-rails,model,associations,Ruby On Rails,Model,Associations,在我的应用程序中,我有一个用户模型和一个项目模型。一个用户有许多任务,每个项目都属于一个用户。但是,随着每个项目都有一个所有者,即创建它的用户,我希望所有者能够与其他人共享它(这样项目就可以与其他用户的帐户一起显示)。我想象必须使用has\u many:through,并设置一个带有用户id和项目id的projects\u users表。我猜这就是最终结果 Project.first.user # The creator of the project => #<User id

在我的应用程序中,我有一个用户模型和一个项目模型。一个用户有许多任务,每个项目都属于一个用户。但是,随着每个项目都有一个所有者,即创建它的用户,我希望所有者能够与其他人共享它(这样项目就可以与其他用户的帐户一起显示)。我想象必须使用has\u many:through,并设置一个带有用户id和项目id的projects\u users表。我猜这就是最终结果

Project.first.user
  # The creator of the project
  => #<User id: 1, name: 'andrew', etc...>

Project.first.users
  # The users that the creator chose to share it with
  => [#<User id: 2 ...>, #<User id: 3 ...>]

在我的脑海中,我想你可能想建立一个ProjectShare模型。
ProjectShare模型将属于用户(共享者),属于项目(共享的项目),并且有许多用户共享(只是用户模型的不同类名)

这样你就可以知道到底是谁和谁分享了什么。
我认为您可以通过相应地命名模型来完成与has\u many相同的任务。

以下是如何将所有者字段添加到
项目
模型中,然后将所有者项目集合添加到
用户
模型中。您可以将已有的用于共享项目部分

class User < ActiveRecord::Base
  has_many :owned_projects, :class_name => 'Project', :foreign_key => 'owner_id'
end
class Project < ActiveRecord::Base
  belongs_to :owner, :class_name => 'User'
end
class用户'Project',:foreign\u key=>'owner\u id'
结束
类项目'User'
结束
您需要将
owner\u id
列添加到
projects
表中

class User < ActiveRecord::Base
  has_many :projects # Calling user.projects returns the projects that user created
  has_many :shared_projects # How to get user.shared_projects to return project records?
end
class User < ActiveRecord::Base
  has_many :owned_projects, :class_name => 'Project', :foreign_key => 'owner_id'
end
class Project < ActiveRecord::Base
  belongs_to :owner, :class_name => 'User'
end