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

前端之家收集整理的这篇文章主要介绍了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?"
原文链接:https://www.f2er.com/ruby/272168.html

猜你在找的Ruby相关文章