【发布时间】:2015-03-14 19:54:28
【问题描述】:
所以。我有用户和电影。用户观看了一些电影而不是其他电影。我想这样表达这种关系:
注意:
- 不确定是否重要;但电影没有必须与用户联系;它们可以独立存在(即电影 1 与用户 2 没有关系)。用户也可以独立存在;他们不必看过或未看过电影(此处未显示,但您明白了)
- 一个用户可以观看一部电影,但另一个用户不观看(灰色与黑色连接)
我最初的反应是这是has_many :through 关系,类似于:
/models/user.rb:
def User
has_many :movies, :through => :unwatched_movies
has_many :movies, :through => :watched_movies
end
/models/movie.rb:
def Movie
has_many :users, :through => :unwatched_movies
has_many :users, :through => :watched_movies
end
但首先,那段代码肯定行不通……
我希望能够查询u.unwatched_movies(其中u 是User 的一个实例,这似乎与上述不符。
我感觉这与:source 或:as 有关...但我感觉有点失落。我是否认为这是一个 3 级层次结构,我需要 User、UnwatchedMovieList/WatchedMovieList 和 Movie 的模型? This question 感觉非常接近,但我似乎无法让它在这种情况下工作。
任何关于如何编写这些模型和迁移的帮助都会非常有帮助。谢谢!
【问题讨论】:
标签: ruby-on-rails ruby activerecord has-many-through rails-models