2012-07-12 45 views
0

上下文:我有一個帶有附加頭像(通過回形針)的用戶模型。當創建用戶時,頭像不是必需的,但是當用戶更新他的頭像時,我希望頭像是必需的。 當用戶上傳新的頭像時,只有頭像通過ajax請求提交。此時,如果file_field爲空,我想返回驗證錯誤。僅在單個屬性更新時添加狀態驗證

起初我用

validates_attachment_presence :avatar, message: "The file is missing", :if => ->{ !new_record? } 

但預期它不完全工作,它讓我的驗證測試套件失敗的should be_valid

describe User do 
    before do 
    @user = FactoryGirl.create :user 
    end 

    subject { @user } 

    [...] 

    it { should be_valid } 
end 

這是正常的。

我應該如何處理這個問題的任何想法? 我想出的唯一的另一個想法是如果文件字段爲空但是看起來很亂,則從UserController#update中的@user.errors注入一個新錯誤。

謝謝。

回答

1
validates_attachment_presence :avatar, message: "The file is missing", on: :update 

http://guides.rubyonrails.org/active_record_validations_callbacks.html#on

+0

我不知道這句法中,我使用':在=> update'代替(@Kulbir:是的,大衛之後公佈1' 沒有看過他的回答,我刪除了我的答案) – citraL 2012-07-12 14:19:49

+0

@citraL David使用的是新的ruby哈希語法。檢查這個[簡單的例子](http://www.gaurishsharma.com/2012/04/new-ruby-1-9-hash-syntax.html)。 – 2012-07-12 14:38:24

+0

開瓶器正在使用消息:「文件丟失」,這是新的語法,所以我用新的語法也用於更新選項。 – 2012-07-12 15:20:46

相關問題