【发布时间】:2015-09-22 20:58:31
【问题描述】:
我有一个 User、Post 和 Like 模型。一个用户有很多帖子,一个用户可以点赞帖子。
has_many :user_posts
has_many :users, through: :user_posts
has_many :likes
has_many :users, through: :likes
另一方面,我的 rspecs 是:
it { should have_many(:users).through(:user_posts) }
it { should have_many(:user_posts) }
it { should have_many(:likes) }
it { should have_many(:user_likes).through(:likes) }
这似乎不太顺利,因为 rspec 抱怨已经通过用户建立了关系:
Expected Post to have a has_many association called users (, Expected users to have users through likes, but got it through user_posts)
我尝试了各种与 class_name 的组合,但没有取得多大成功。我应该如何定义这些关系?
【问题讨论】:
-
用户不应该只是 has_many :posts。为什么是 user_posts?
-
您的问题/示例代码不是很清楚 - 所有这些关系都在同一个模型上吗?您的每个 RSpec 期望与哪些模型相关?您的期望之一提到:user_likes 但这不在您最初陈述的关系中。
-
@LannyBose,你是对的。最初我认为我可以处理用户和帖子之间的一种关系:用户有帖子并且用户喜欢帖子。但这显然行不通,因此我正在寻找喜欢的模型。这确实意味着我可以删除多对多关系以支持 has_many
标签: ruby-on-rails activerecord rspec