【发布时间】:2014-06-09 16:55:06
【问题描述】:
在我的 Ruby on Rails 项目中,我有一个 User 模型和一个 Content 模型。
一个用户has_many :contents 和一个内容belongs_to :user。
现在,我想创建播放列表的想法。将有多个播放列表,每个播放列表都会按某种顺序包含一些内容。此时,用户是否拥有播放列表并不重要,它们将是通用的。
播放列表与用户没有任何关联。它们将是通用的,归系统所有。
我认为解决方案类似于拥有一个模型播放列表和另一个具有这些属性的表:playlist_id:integer content_id:integer order:integer。但是我真的需要为这种新关系创建所有 MVC 部分吗?
当我查看 Rails 关联时,我很困惑,我不知道该怎么做,如果使用 through 属性,在两个 内容 和 播放列表 甚至如何建立这种新关系。
如果有人可以帮助我,我会很高兴,正如你所看到的,我有点困惑。
【问题讨论】:
-
您是否打算让用户仅通过播放列表访问他们的内容?如果是这样,
through可能是您想要的,但如果用户应该能够访问不在播放列表中的内容,through可能会受到限制。 -
用户可以访问所有内容。播放列表的唯一目标是让一些有序的内容作为 JSON 传递到另一台机器上的 JavaScript 文件。它们不是为了限制用户访问而创建的。
-
所以如果我们绘制这个图表,你想要的是 a) 用户 内容; b) 用户 播放列表; (c) 播放列表 内容,对吗? (其中,“”表示某种关联)
-
还有一件事,如果用户要访问一个播放列表,该播放列表是否会包含用户尚未拥有的内容?
-
用户与播放列表没有任何关联。这个播放列表概念只是关于内容和播放列表。一个播放列表可以有很多内容,一个内容可能属于多个播放列表。内容可能不属于任何播放列表而存在。
标签: ruby-on-rails associations playlist