gpt4 book ai didi

ruby-on-rails - Carrierwave - 如果文件类型不在白名单上,则触发存在验证

转载 作者:行者123 更新时间:2023-12-05 02:21:04 24 4
gpt4 key购买 nike

在我的 Rails 4 应用程序中,我使用载波上传图片。

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

我的表格

  <%= 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'} %>

当我尝试附加扩展名不在白名单中的文件时。我收到“不能为空”的错误消息。如果我删除存在验证,则 white_list 验证错误会正确显示。我真的希望显示文件扩展名错误消息,因为从技术上讲它不是空白它只是有一个不正确的文件。

最佳答案

我遇到了同样的问题,结果是这样的:

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,但这对我来说已经足够了。

关于ruby-on-rails - Carrierwave - 如果文件类型不在白名单上,则触发存在验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36373601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com