3
红宝石2.1.8 轨3.2.18Rails的ActiveRecord的条件回调问题
我想运行一个回调时,只有当一个特定的属性已经改变保存记录。例如
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,如果: - > {my_attr_changed? }' – max
虽然在这里使用符号应该工作。您是否创建了一个复制问题的测试,并且完全确定错误不在方法中? – max
符号应该工作 –