2013-10-16 27 views
4

我試圖確保圖片模型的每個實例都附加了一個文件。載波:如何驗證該圖像附加? (無論是上傳,或remote_url)

換句話說 - 有形式兩個領域:

:file 
:remote_file_url 

我想用戶填寫其中的至少一個。

當我驗證存在:文件,並提交remote_file_url而不是文件 - 然後它會給出驗證錯誤。

我發現,現在唯一的辦法就是做水木清華這樣的:

class Picture < ActiveRecord::Base 
    validate :file_xor_remote_file_url 

    private  
    def file_xor_remote_file_url 
    if !(file.blank?^remote_file_url.blank?) 
     errors.add(:base, "Specify a file to upload, or file URL, not both") 
    end 
    end 

end 
+0

'if file.blank? && remote_file_url.blank?'可能更習慣ruby,但總體上你的問題是什麼? – phoet

+0

'validates_presence_of:file' working –

回答

4

The wiki說,你可以驗證你上傳這樣的:

mount_uploader :avatar, AvatarUploader 
validates_presence_of :avatar 

它沒有提到任何不同的處理遠程URL,但強調Carrierwave驗證的存在,而不僅僅是存在一個URL。因此,給定的遠程URL必須引用可以上傳的有效文件。

你說「驗證存在:文件」,但也許這可能是重點。希望這可以幫助。

+0

hm ..你是對的..不知道爲什麼它不工作之前 –

+1

就是這樣。請記住爲Rails 4使用'validates' – Francisco