Ruby on rails Carrierwave-如果文件类型不在白名单上,则触发状态验证
在我的rails 4应用程序中,我使用carrierwave上传图像Ruby on rails Carrierwave-如果文件类型不在白名单上,则触发状态验证,ruby-on-rails,carrierwave,Ruby On Rails,Carrierwave,在我的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
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
我的表格
<%= 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\u uploader:attachment,AttachmentUploader
(二)
我想如果存在其他错误(很可能是
扩展名\u白色\u列表\u错误
),那么附件必须已经存在,对吗?我想您可以进一步检查消息本身,以确定它是否为扩展\u白名单\u错误
,但这对我来说已经足够了。您最终解决了这个问题吗?我也有同样的问题@gnclmorais我想我只是用它来处理文件输入
<%= 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'} %>
validates :attachment, presence: true, unless: :attachment_errors_exist?
def attachment_errors_exist?
errors[:attachment].present?
end