【发布时间】:2014-01-04 04:50:10
【问题描述】:
我对 Ruby 很陌生,我开始为自己构建一个应用程序,只是为了边走边学。
抱歉,如果这是一个非常简单的问题,但我似乎无法通过我可以对关联进行的所有搜索来弄清楚。
因为我喜欢收集黑胶唱片,所以我希望建立一个用户可以发布他们收藏的黑胶唱片的网站。我从我的用户模型和乙烯基模型之间的简单 has_many/belongs_to 关联开始。我意识到,如果两个用户拥有相同的黑胶唱片,那么第二个用户最好只找到之前上传的一个并将其添加到他们的收藏中(而不是在数据库中有一堆重复的)。
经过一番搜索,我决定建立一个 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
但是,在 sqlite 浏览器中查看时,似乎每个“集合”最终都只有一个 user_id 和一个vinyl_id。显然,我需要每个“集合”都有一个很长的 user_id 列表。
有没有更简单的方法可以做到这一点? 是否可以只将 collection.rb 变成以下?
has_many :users
belongs_to :vinyl
A 是否有可能拥有 B 的多个和 B 拥有 A 的多个背面,或者这只是疯了?这是一个愚蠢的问题吗?
当然,我将不得不对我的控制器和视图进行大量修改,但我只想确保首先以正确的方式设置数据库。谢谢大家的帮助!
【问题讨论】:
标签: ruby-on-rails ruby associations has-many belongs-to