【问题标题】:Scope defined query doesn't work but standalone query is ok范围定义的查询不起作用,但独立查询可以
【发布时间】:2016-04-07 06:58:09
【问题描述】:
class Post < ApplicationRecord
  scope :my_scope, -> { where(user_id: 2) }
end

为什么category.posts.my_scope 会返回所有帖子?

以下两个语句仅正确返回 user_id 为 2 的帖子:

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

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

【问题讨论】:

    标签: ruby-on-rails rails-activerecord ruby-on-rails-5


    【解决方案1】:

    从这里看起来不错。

    为什么 category.posts.my_scope 会返回所有帖子?

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

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

    【讨论】:

    • 我用to_sql 运行了两个查询,除了AND 之外它们是相同的。所以它必须在我的其他地方的代码中发生一些时髦的事情。 (不,大多数帖子都有不同的 user_id。)
    • 更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多