3

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

  1. 是图像
  2. 不是太大

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

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

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

错误信息

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

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

我该如何清理这个?

请注意,上传小图像的快乐路径工作得很好。

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

4

2 回答 2

9

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

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

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" }
于 2013-11-06T07:28:46.863 回答
3

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

  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
于 2012-05-23T00:42:53.177 回答