Rails ActiveRecord条件回调问题



ruby 2.1.8rails 3.2.18

我试图运行回调时,记录保存只有当一个特定的属性已被更改。例如

before_save :do_the_thing, if: :my_attr_changed?

然而,当我改变my_attr并保存时,do_the_thing没有得到调用。然而,如果我做同样的事情,但是用:

before_save :do_the_thing
def do_the_thing
  puts my_attr_changed?
end

将"true"输出到日志中。我很困惑。感谢任何帮助。谢谢。

把它移到lambda

before_save :do_the_thing, if: -> { my_attr_changed? }

最新更新