【问题标题】:Cleaning up Paperclip error messages清理回形针错误消息
【发布时间】:2012-05-29 12:04:38
【问题描述】:

好的,所以我已经使用回形针了,我正在尝试使用内置的验证器来确保文件上传

  1. 是图片
  2. 不会太大

所以我在模型中有这个,根据文档:

validates_attachment :avatar,
:content_type => { :content_type => /image/ },
:size => { :in => 0..2.megabytes }

但是它在视图中显示的错误是这样的混乱:

我希望它更简单一些,例如“头像必须是小于 2 兆字节的图像”

但是,我看不到在哪里执行此操作,因为传递 :message => 'something' 会引发错误 Unknown validator: 'MessageValidator'

我该如何清理?

请注意,上传小图片的快乐路径可以正常工作。

一些进一步的测试表明,上传太大的图像(如桌面背景)或不是 .rb 文件的图像会更正常地失败,但根本不会显示任何错误消息。仍然不是我想要的。

【问题讨论】:

    标签: ruby-on-rails activerecord paperclip validation


    【解决方案1】:

    显然你很久以前就自己解决了这个问题,但是对于任何正在寻找答案的人来说,实际上有一种方法可以在提供的验证中做到这一点。

    像这样简单地添加您的消息:

    validates_attachment :avatar,
    :content_type => { :content_type => /image/, :message => "Avatar must be an image" },
    :size => { :in => 0..2.megabytes, :message => "Avatar must be less than 2 megabytes in size" }
    

    【讨论】:

      【解决方案2】:

      我最终编写了两个自定义验证器。确实,它们与回形针验证器做的事情相同,但它们失败得更漂亮:

        def avatar_is_a_image
          if self.avatar?
            if !self.avatar.content_type.match(/image/)
              errors.add(:avatar, "Avatar must be an image")
            end
          end
        end
      
        def avatar_is_less_than_two_megabytes
          if self.avatar?
            if self.avatar.size > 5.megabytes
              errors.add(:avatar, "Avatar must be less than 5 megabytes in size")
            end
          end
        end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多