Как я могу обновить атрибуты в after_save, не вызывая рекурсию в rails 2.3?

У меня есть модель, к которой прикреплено видео с помощью Скрепки . После сохранения я использую сохраненное видео для создания миниатюры. Мне нужно делать это после каждого сохранения, даже если новое видео не было загружено, потому что пользователь может изменить время захвата миниатюры.

В настоящее время я использую after_post_process для этого, но он будет только генерировать эскиз при загрузке файла (это обратный вызов, который является частью Paperclip).

В идеале я бы использовал обратный вызов after_save, например:

after_save :save_thumbnail
def save_thumbnail
  #generate thumbnail...
  self.update_attributes(
    :thumbnail_file_name => File.basename(thumb), 
    :thumbnail_content_type => 'image/jpeg'
  )
end

К сожалению, update_attributes вызывает save, который затем вызывает обратный вызов before_save, вызывая бесконечный цикл. Есть ли простой способ обойти это поведение?

14
задан peterjwest 13 July 2011 в 15:20
поделиться