Ruby on rails 如何使一个用户拥有多个对象,但每个对象可以属于多个用户?

Ruby on rails 如何使一个用户拥有多个对象,但每个对象可以属于多个用户?,ruby-on-rails,ruby,associations,has-many,belongs-to,Ruby On Rails,Ruby,Associations,Has Many,Belongs To,我对Ruby非常陌生,我开始为自己构建一个应用程序,只是为了边走边学习。 很抱歉,如果这是一个非常简单的问题,但我似乎无法通过对关联所做的所有搜索来解决它 因为我喜欢收集乙烯基,我希望建立一个网站,用户可以发布他们收集的乙烯基。我从我的用户模型和乙烯基模型之间的简单关联开始。我意识到,如果两个用户拥有相同的乙烯基,那么第二个用户最好只找到先前上传的乙烯基并将其添加到他们的集合中(而不是在数据库中有一堆重复的乙烯基) 在进行了一些搜索之后,我决定建立一个has_many:through关系,在此关

我对Ruby非常陌生,我开始为自己构建一个应用程序,只是为了边走边学习。
很抱歉,如果这是一个非常简单的问题,但我似乎无法通过对关联所做的所有搜索来解决它

因为我喜欢收集乙烯基,我希望建立一个网站,用户可以发布他们收集的乙烯基。我从我的用户模型和乙烯基模型之间的简单关联开始。我意识到,如果两个用户拥有相同的乙烯基,那么第二个用户最好只找到先前上传的乙烯基并将其添加到他们的集合中(而不是在数据库中有一堆重复的乙烯基)

在进行了一些搜索之后,我决定建立一个has_many:through关系,在此关系中,我制作了第三个名为collections的模型,该模型具有:

belongs_to :user
belongs_to :vinyl
所以现在我的乙烯基模型

has_many :collections
has_many :users, through: :collections
has_many :collections
has_many :vinyls, through: :collections
我的用户模型

has_many :collections
has_many :users, through: :collections
has_many :collections
has_many :vinyls, through: :collections
但是,在sqlite浏览器中查看时,似乎每个“集合”都只有一个用户id和一个乙烯基id。显然,我需要每个“集合”都有一长串用户id

有没有更简单的方法?是否可以将collection.rb转换为以下内容

has_many :users
belongs_to :vinyl
A有可能有很多B,B有很多A的背部,还是这太疯狂了?这是个愚蠢的问题吗


当然,我必须在我的控制器和视图中做很多修改,但我只想确保首先以正确的方式设置数据库。谢谢大家的帮助

在问题的前半部分,您准确描述了您需要的解决方案。你做的一切都对

假设您有两个用户A和B,以及三条记录X、Y和Z。 用户A有记录Y,用户B有记录Z。。。但两者都有X记录

您可以创建您的用户:

a = User.create # id: 1
b = User.create # id: 2
以及您的记录:

x = Record.create # id: 1
y = Record.create # id: 2
z = Record.create # id: 3
然后你建立你的协会:

a.records << y
a.records << x
b.records << x
b.records << z
这就是联接表的工作方式。它将每个用户连接到其所有记录,并将每个记录连接到其所有用户

这允许您执行诸如
User.first.records
Record.first.users


你在正确的轨道上。。。继续,它会开始咔嗒咔嗒响。也许可以将您的联接表和模型从
集合
重命名为
记录所有者
或其他更合理的名称?

谢谢您的解释!现在它变得更有意义了。