Carrierwave删除图片并恢复默认设置

时间:2013-11-27 22:07:14

标签: ruby-on-rails-3 carrierwave

我正在使用带有carrierwave gem的Rails 3。

我设法从我的用户模型中删除了头像图像:

@user.remove_photo!

它完美无缺。但是,我想将该用户的图片网址设置回default_url(这是每个用户上传的图片之前的图片)。

任何想法如何?

-

图像显示代码:

<%= image_tag(@user.photo.send(:layout).url, :alt => @user.full_name, :class => 'photo large') %>

default_url代码:

def default_url
    "default_photo.jpg"
  end

2 个答案:

答案 0 :(得分:0)

来自文档:

https://github.com/carrierwaveuploader/carrierwave

  

在许多情况下,尤其是在处理图像时,这可能是一件好事   提供默认网址的想法,如果没有文件,则提供后备   上传。您可以通过覆盖default_url方法轻松完成此操作   在你的上传者中:

class MyUploader < CarrierWave::Uploader::Base
  def default_url
    "/images/fallback/" + [version_name, "default.png"].compact.join('_')
  end
end
  

或者如果您正在使用Rails资产管道:

class MyUploader < CarrierWave::Uploader::Base
  def default_url
    ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
  end
end

答案 1 :(得分:0)

您需要强制将数据库中的字段更新为空,然后该载波将使用default_url,您可以通过调用Model.where(<CONDITIONS>).update_all(photo: nil)instance.update_column(photo: nil)

来做到这一点。