有没有办法用ActiveStorage验证附件?例如,如果我想验证内容类型或文件大小?
像回形针这样的方法就太棒了!
validates_attachment_content_type :logo, content_type: /\Aimage\/.*\Z/
validates_attachment_size :logo, less_than: 1.megabytes
发布于 2018-01-10 04:40:32
好吧,这不是很好,但在他们加入一些验证之前,这可能是必要的:
validate :logo_validation
def logo_validation
if logo.attached?
if logo.blob.byte_size > 1000000
logo.purge
errors[:base] << 'Too big'
elsif !logo.blob.content_type.starts_with?('image/')
logo.purge
errors[:base] << 'Wrong format'
end
end
end
发布于 2018-03-14 06:42:55
你可以使用很棒的https://github.com/musaffa/file_validators gem
class Profile < ActiveRecord::Base
has_one_attached :avatar
validates :avatar, file_size: { less_than_or_equal_to: 100.kilobytes },
file_content_type: { allow: ['image/jpeg', 'image/png'] }
end
我将它与表单对象一起使用,所以我不能100%确定它是否直接与AR一起工作,但它应该……
发布于 2019-07-30 23:16:47
偶然发现了这个宝石:https://github.com/igorkasyanchuk/active_storage_validations
class User < ApplicationRecord
has_one_attached :avatar
has_many_attached :photos
validates :name, presence: true
validates :avatar, attached: true, content_type: 'image/png',
dimension: { width: 200, height: 200 }
validates :photos, attached: true, content_type: ['image/png', 'image/jpg', 'image/jpeg'],
dimension: { width: { min: 800, max: 2400 },
height: { min: 600, max: 1800 }, message: 'is not given between dimension' }
end
https://stackoverflow.com/questions/48158770
复制相似问题