用户有很多帖子。 帖子有许多部分。
我想检查用户是否有任何帖子,部分标题为" Hello World"。
在Rails 4中执行此操作的正确方法是什么?
我尝试了什么:sections = @user.sections.where(title: "Hello World")
错误:NoMethodError: undefined method 'sections' for #<User::ActiveRecord_Relation:0x007f8781fa9a19>
答案 0 :(得分:1)
您可以通过这种方式实现它,使用exists?
方法检查单个SQL调用是否存在任何记录(没有像any?
或present?
那样不必要的对象实例化): / p>
@user.posts.includes(:sections).where(sections: {title: "Hello World"}).exists?
答案 1 :(得分:0)
你可以使用:join:
@user.posts.joins(:sections).where(sections: {title: "Hello World"}).any?
这里将使用INNER JOIN,这将生成sql-query:
SELECT COUNT(*) FROM "posts"
INNER JOIN "sections" ON "sections"."post_id" = "posts"."id"
WHERE "posts"."user_id" = $1 AND "sections"."title" = "Hello World"