范围定义的查询不起作用,但独立查询可以

Scope defined query doesn't work but standalone query is ok

class Post < ApplicationRecord
  scope :my_scope, -> { where(user_id: 2) }
end

为什么 category.posts.my_scope return 所有帖子?

以下两个语句正确 returns 只发帖 user_id 2:

category.posts.where(user_id: 2)
Post.my_scope

我不能在链式对象上使用作用域吗?

从这里看起来不错。

Why does category.posts.my_scope return all posts?

在您的示例中,此特定类别的 所有 帖子是否可能属于具有 id: 2 的用户?

一个简单的判断方法是这样做:category.posts.my_scope.to_sql 看看它是否按照您预期的方式工作。您可以将其与 Post.my_scope.to_sql

进行比较