2012-05-22 82 views
2

好了,所以我有紙夾的工作,和我試圖使用內置的驗證,以確保文件上傳清理回形針錯誤信息

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

所以我有這個模型中,每個文件:

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

但是錯誤它顯示的看法是這樣的爛攤子:

Error Message

我想它是東西有點簡單,像「阿凡達必須是圖像小於2兆字節」

不過,我看不到在哪裏做,因爲通過:message => 'something'會拋出一個錯誤Unknown validator: 'MessageValidator'

我該如何去清理它?

請注意,上傳小圖片的快樂路徑工作得很好。

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

回答

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 
8

很顯然,你是很久以前解決了這個自己,但對於任何人誰是尋找答案,實際上一個是在提供的驗證中做到這一點。

簡單的添加您的留言,像這樣:

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