为什么ActiveRecord作用域修改类作用域



我有一个简单的类定义如下

class User < ApplicationRecord

scope :active, lambda {
puts User.all.to_sql
puts self.to_sql
where(inactive: false)
}

当我运行这个User.where('id = ?',1).active时,那么puts User.all.to_sqlputs self.to_sql都输出相同的sql。

"选择"users"。* FROM "users"WHERE (id = 1)">

"选择"users"。* FROM "users"WHERE (id = 1)">

我知道我可以使用User.unscoped.all来删除where子句,但是为什么在这种情况下类级别范围不同?

mu is to short帮我找到了这个。这是一个在rails 6.1中修复的错误。

https://guides.rubyonrails.org/6_1_release_notes.html

命名作用域链不再将作用域泄漏给类级查询方法。

相关内容

  • 没有找到相关文章

最新更新