在模型中只执行一次函数

Executing a function only once in model

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

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

虽然我需要随着时间的推移反复保存这个模型,因为在附件之上我还有一些其他字段和一个回形针附件。

上面的代码然后抛出一个错误无法找到一个空白名称的文件的几何形状我猜这是因为临时文件不再存在其他时间我保存这个型号..

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

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

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