ruby-on-rails – Rails ActiveRecord条件回调问题

ruby2.1.8
rails 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? }

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...