在模型中仅执行一次函数

时间:2017-04-16 22:52:50

标签: ruby-on-rails paperclip

我正在尝试从临时文件中检索图像尺寸。通过以下方式取得了成功:

after_post_process :save_ratio_image

  def save_ratio_image
    geo = Paperclip::Geometry.from_file(image.queued_for_write[:original])
    self.ratiolongdivlarg = geo.width / geo.height
  end

虽然我需要重复保存这个模型,因为除了附件之外,我还有一些其他字段和另外一个Paperclip附件。

上面的代码然后抛出错误找不到具有空白名称的文件的几何我想这是因为临时文件不再存在,其他时候我保存此模型..

有没有办法只调用一次这个函数(即第一次保存这个模型的记录)?

1 个答案:

答案 0 :(得分:1)

尝试after_create回调,而不是您当前使用的回调。它只会在第一次保存记录时调用该函数。

http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html