验证失败后Carrierwave显示图像

时间:2016-07-14 22:35:38

标签: validation ruby-on-rails-4 carrierwave

使用Carrierwave上传图像,并在验证失败时在页面上呈现图像。

情境:

访问用户编辑页面,其中包含用户的头像图像。 上传大于4 MB的新头像图片并点击更新。 验证程序失败,因为文件大小超过4 MB。 用户编辑页面呈现正确的错误消息。

问题:

图像显示在渲染的编辑页面上。如果我重新访问用户编辑页面,它就会消失,并且可以确认它没有保存在数据库中。

我也在使用' file_validator'宝石。

class User < ActiveRecord::Base
  ...
 validates :avatar, file_size: { less_than: 4.megabytes }
  ... 
end 


class UsersController < ApplicationController
 ...
 def update
  if @user.update_attributes(user_params)
    flash[:success] = "Your account settings were successfully updated."
    redirect_to @user
  else
    render 'edit'
  end
end

参考: https://github.com/johnTheDudeMan/foodme

1 个答案:

答案 0 :(得分:0)

在我的#update中添加以下行似乎可以解决问题。现在我只需要弄清楚如何清除缓存,因为carrierwave仍能保留那些失败的上传。

@user.avatar = @user.avatar.retrieve_from_store!(@user.avatar.identifier)