2011-11-23 53 views
0

我對我的選民has_many:through模型有一些驗證。但是,我不太清楚如何處理驗證錯誤,因爲我使用create!這是我的代碼:使用create時如何處理驗證錯誤!方法

def cast_vote_up!(user_id, direction) 
    voterships.create!(:issue_id => self.id, :user_id => user_id, 
              :direction => direction) 
    end 

這是我的問題模型。我有問題,用戶和用戶通過聯接模式對問題進行投票。我如何處理驗證錯誤,因爲我只是使用create!通常我會做類似

if @model.save 
    #code 
else 
    #other code 
end 

但沒有.save我不知道該怎麼做

回答

1

create!將拋出失敗的錯誤,但是如果你使用create(不!),你可以處理錯誤您save

if voterships.create(....) 
    ...if successfully created... 
else 
    ...if create failed... 
end 

做使用爆炸(!)基本上意味着你問你的應用程序立即停止繼續執行同樣的方式,如果出現錯了。在某些情況下,這可能是可取的,但在處理表單和用戶輸入時,您需要使用非重載版本,因爲人們經常犯應該被捕獲和處理的簡單的輸入錯誤,而不是顯示應用程序錯誤頁面。