在我的 Rails 4 应用程序中,我使用 Carrierwave 上传图像。
class UserItemImage < ActiveRecord::Base
include PicturesHelper
attr_accessor :foo
mount_uploader :picture, PictureUploader
belongs_to :user_item
validate :picture_size
validates :picture, presence: true
end
我在我的中使用这个白名单picture_uploader.rb
def extension_white_list
%w(jpg jpeg png)
end
My form
<%= simple_form_for :user_item_image, url: user_item_user_item_images_path(@user_item), multipart: true do |f| %>
<%= f.input :picture, as: :file, label: false, input_html: {multiple: true, class: 'image-file'} %>
当我尝试附加扩展名不在白名单中的文件时。我收到“不能为空”错误消息。如果我删除存在验证,则白名单验证错误将正确显示。我真的希望显示文件扩展名错误消息,因为从技术上讲,它不是空白的,它只是有一个不正确的文件。
我有同样的问题并最终这样做:
1)确保放置mount_uploader :attachment, AttachmentUploader
在验证之前。
2)
validates :attachment, presence: true, unless: :attachment_errors_exist?
def attachment_errors_exist?
errors[:attachment].present?
end
我想是否存在其他错误(很可能是extension_white_list_error
),那么附件一定已经存在,对吗?我想你可以进一步检查消息本身以确定它是否是extension_white_list_error
,但这对我来说已经足够好了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)