首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ActiveStorage文件附件验证

ActiveStorage文件附件验证
EN

Stack Overflow用户
提问于 2018-01-09 06:09:16
回答 6查看 28K关注 0票数 28

有没有办法用ActiveStorage验证附件?例如,如果我想验证内容类型或文件大小?

像回形针这样的方法就太棒了!

代码语言:javascript
复制
  validates_attachment_content_type :logo, content_type: /\Aimage\/.*\Z/
  validates_attachment_size :logo, less_than: 1.megabytes
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2018-01-10 04:40:32

好吧,这不是很好,但在他们加入一些验证之前,这可能是必要的:

代码语言:javascript
复制
  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
票数 37
EN

Stack Overflow用户

发布于 2018-03-14 06:42:55

你可以使用很棒的https://github.com/musaffa/file_validators gem

代码语言:javascript
复制
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一起工作,但它应该……

票数 9
EN

Stack Overflow用户

发布于 2019-07-30 23:16:47

偶然发现了这个宝石:https://github.com/igorkasyanchuk/active_storage_validations

代码语言:javascript
复制
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
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48158770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档