我用回形針在Rails應用程序,並具有以下在我的模型智慧回形針驗證
validates_attachment_presence :photo
validates_attachment_size :photo, :less_than=>1.megabyte
validates_attachment_content_type :photo, :content_type=>['image/jpeg', 'image/png', 'image/gif']
如果用戶忘記添加附件,所有這三個驗證失敗3次驗證,因此,用戶呈現以下三個錯誤:
# Photo file name must be set.
# Photo file size file size must be between 0 and 1048576 bytes.
# Photo content type is not included in the list
我認爲這將是最好的,只是表明在這種情況下,因爲其他兩個錯誤是純粹的間接的第一個錯誤。我將用戶喜歡永遠只看到如果已添加附件,則會出現第二個錯誤不符合驗證標準。
我敢肯定沒有預焙驗證,做這樣的事情,並從閱讀中的供應商/插件/回形針/ lib中的代碼/ paperclip.rb我看到validates_attachment_size方法支持:除非參數作爲圖:
def validates_attachment_presence name, options = {}
message = options[:message] || "must be set."
validates_presence_of :"#{name}_file_name",
:message => message,
:if => options[:if],
:unless => options[:unless]
end
所以,我在想,我可以做類似如下:
validates_attachment_size :photo, :less_than=>1.megabyte, :unless=> :photo.blank
但是,這打破了應用程序。任何人有任何這種事情的經驗?對回形針源代碼會是一個很好的貢獻。
編輯:
我已經使用這個嘗試:
validates_attachment_size :photo, :less_than=>1.megabyte,
:unless=> Proc.new { |image| image[:photo].nil? }
這完全不是那麼回事,雖然因爲我剛剛成功地上傳與此驗證代替5MB的MP3。但它很有希望,因爲用戶沒有附加照片時不會顯示錯誤消息。
回形針哪個版本您使用的?我有2.3.1.1,你所描述的是我自動發生的事情。如果沒有附加文件,它只會返回該錯誤。如果我附加文件,但大小和內容類型驗證失敗,則會顯示這些錯誤。 – 2010-02-13 19:41:00
奇怪,因爲我也在插件的2.3.1.1上......我打算按照下面的建議去創建我自己的自定義錯誤信息,因爲我真的不喜歡他們告訴你接待需求的方式在0到X字節之間.... – stephenmurdoch 2010-02-14 00:26:28
我使用的是2.3.2,同樣的問題 – 2010-05-22 00:31:24