该问题是由于在自定义的after回调中,无法获取当前模型的当前作用域(即使用了哪种方式筛选出来的数据)而导致的。解决方法是手动在自定义的回调中添加current_scope。
举个例子,如果你的模型为Post,你希望在保存模型时添加一些自定义逻辑,可以在模型中添加after_save回调:
class Post < ApplicationRecord after_save :my_custom_callback
def my_custom_callback # 在回调中手动添加current_scope self.class.current_scope ||= self.class.all
# 在这里可以使用current_scope进行任意操作
...
end end
这样,在my_custom_callback方法中,就可以使用current_scope来获取当前模型的作用域了。如果没有手动添加current_scope,它将会是nil,导致一些查询操作失败。