2010-02-06 66 views
1

rails plugin paperclip支持在模型驗證如:導軌回形針插件 - 驗證

validates_attachment_size 

唯一的問題是,使用這種驗證似乎強制實際的附件的驗證,其中,有時可能沒有一個。

如果我正在驗證以下內容,是什麼條件:如果不存在,是否可以忽略驗證:文檔存在? (意思是用戶提交了沒有附加文檔的父對象)。

validates_attachment_size :document, :less_than => 5.megabytes, :if => ??? 

父對象是:注意,所以在note.rb文件我有:

has_attached_file :document 

RDocs:dev.thoughtbot.com/paperclip/

回答

0

您可以添加:allow_nil => true選項,如果附件不存在,將跳過驗證。

+0

它似乎沒有工作。添加後: validates_attachment_size:document,:less_than => 5.megabytes,:allow_nil => true 註釋不會保存到數據庫中。在我的筆記控制器中,我有一個if語句,用於說明@ note.save,做好事情,否則重定向回閃爍錯誤的頁面。 它每次重定向 - @ note.save不會正確啓動。筆記中沒有其他驗證可能導致它無法保存,因爲註釋回形針驗證會使所有內容正常工作。 – Steve 2010-02-06 20:16:22

+0

日誌沒有詳細說明任何特定於回形針的東西(這是令人沮喪的)。 更新:查看以下內容:http://github.com/thoughtbot/paperclip/issues/issue/134 – Steve 2010-02-06 20:17:01

2

驗證聲明後,您可以通過:if => lambda { avatar.dirty? },假設您的附件名爲頭像。例如:

validates_attachment_size :avatar, :less_than => 500.kilobytes, :if => lambda { avatar.dirty? }

0

檢查文件名。

validates_attachment_size :document, :less_than => 5.megabytes, :if => !self.document_file_name.nil?