【问题标题】:Carrierwave callback after all versions are created创建所有版本后的载波回调
【发布时间】:2014-07-17 01:48:54
【问题描述】:

在我的 Rails 应用程序中,我想在创建并存储上传图像的所有版本后更新我的数据库。是否有一个回调可以确保 recreate_versions!做完了?

背景: 我允许用户旋转他们上传到我网站的图像。我使用 webkit-transform 显示旋转预览,并且仅在用户保存图像时使用 imagemagick 实际旋转图像。但是,为了防止在图像版本控制完成之前暂停应用程序,我在后台任务中执行此操作,并通过应用 webkit-transform 继续应用旋转。在从数据库中提取正确的图像之前,我需要知道图像何时完全旋转(而不是在客户端旋转图像)。

附:我查看了这个页面:https://github.com/carrierwaveuploader/carrierwave/wiki/How-to:-use-callbacks,但我也看到这些回调是在任何版本之后调用的,而不是在所有版本控制完成之后。

【问题讨论】:

  • 你得到这个问题的答案了吗?如果可以,可以分享一下吗?
  • 我一直没有得到回复,但我相信这实际上是使用sidekiq在后台任务中执行版本控制的功能。 Sidekiq 没有内置任何东西来让您知道任务何时完成,但是有一些宝石可以做到这一点,例如 sidekiq 状态:github.com/utgarda/sidekiq-status。我还没有机会实施这些更改,但这就是我要开始的方向。

标签: ruby-on-rails imagemagick carrierwave sidekiq


【解决方案1】:

我可以通过使用 after_save 回调来解决这个问题,也许这对你也有帮助

  after_save :update_avatar_url

  def update_avatar_url
     update_column(:avatar, avatar.thumb.url)   
  end

update_column 不会触发 after_save 回调,因此没有无限递归。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多