ruby-on-rails – Rails:如何仅为一个已更改的属性运行before_update?

在我的模型中,我正在将图像url保存在logo_ori中,并使用它来使用before_update缩略图.
# shop.rb
before_update :run_blitline_job

private

def run_blitline_job
  # uses logo_ori to make thumbnails
end

然而,我发现当我保存其他属性(例如:以表格编辑商店的配置文件)时,它也运行before_update.当仅保存logo_ori时,如何限制其执行?

我试过这个:

before_update :run_blitline_job,:if => :logo_ori?

但如果我之前已经保存了logo_ori,它仍然运行before_update.

解决方法

before_update :run_blitline_job,:if => :logo_ori_changed?

这将在每次logo_ori属性更改时运行回调.您还可以使用字符串来实现多个条件:

before_update :run_blitline_job,:if => "!logo_ori_was && logo_ori_changed?"

相关文章

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