使用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
答案 0 :(得分:0)
在我的#update中添加以下行似乎可以解决问题。现在我只需要弄清楚如何清除缓存,因为carrierwave仍能保留那些失败的上传。
@user.avatar = @user.avatar.retrieve_from_store!(@user.avatar.identifier)