簡體   English   中英

清理Paperclip錯誤消息

[英]Cleaning up Paperclip error messages

好的,所以我有回形針工作,我正在嘗試使用內置的驗證器來確保上傳的文件

  1. 是一個圖像
  2. 不是太大了

所以我在模型中有這個,根據文檔:

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

但是它在視圖中顯示的錯誤是這個混亂:

錯誤信息

我希望它有點簡單,比如“阿凡達必須是一個小於2兆字節的圖像”

但是,我無法看到在哪里這樣做,因為傳遞:message => 'something'會拋出錯誤Unknown validator: 'MessageValidator'

我該如何清理呢?

請注意,上傳小圖片的快樂路徑可以正常工作。

一些進一步的測試表明,上傳太大的圖像(如桌面背景)或非.rb文件的內容會更優雅地失敗,但根本不會顯示任何錯誤消息。 仍然不是我想要的。

顯然你很久以前就已經為自己解決了這個問題,但是對於那些正在尋找答案的人來說,實際上有一種方法可以在提供的驗證中做到這一點。

簡單地添加你的消息,如下:

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" }

我最后寫了兩個自定義驗證器。 確實,這些回形針驗證器做了同樣的事情,但它們更加漂亮:

  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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM