假设我有一个用户模型和一个电影模型以及用于存储它们的表。假设我想通过添加第三个表watchwatch_movies来添加监视列表功能,该表将user_id映射到movie_id。
我现在想添加一个watchlist_movie模型。我希望能够使用user.watchlist_movies查询ActiveRecord并获取电影对象的集合。到目前为止,我已经尝试过(在user.rb中)
has_many :watchlist_movies
和
has_many :movies, through: watchlist_movies
第一个结果返回user.watchlist_movies的记录,第二个结果返回user.movies的电影记录的集合。本质上,我想要的是让user.watchlist_movies返回电影记录的集合,因此我希望第一个关系中定义的访问返回第二个关系的内容。我该怎么做呢?
您在这里正确定义了关系,但是您可能会有一种期望与Rails的工作方式不一致的情况。如果您的结构是通过WatchlistMovie与用户相关联的Movie的结构(这是一个简单的连接模型),那么您的方法就正确了。
请记住,您可以随心所欲地打电话给您的人际关系:
has_many :watchlist_movie_associations,
class_name: 'WatchlistMovie'
has_many :watchlist_movies,
class_name: 'Movie',
through: :watchlist_movie_associations
我建议不要这样做,因为这与ActiveRecord如何命名事物的原则背道而驰。如果现在只是让您感到烦恼,那是可以理解的,但是如果您拥抱这种风格而不是与之抗争,那么您将拥有一个更加一致和易于理解的应用程序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句