2013-06-26 36 views
0

早上好時,first_or_create導致問題與非有效的參數創建對象

試圖找到避免目前的情況,我在所以最好的辦法.. 我有一個A級 它具有以下屬性A,b,C,d

當創建被稱爲上A,I首先檢查,查看是否具有下列參數a,b,C時存在的一個實例。

現在我使用查詢的數據庫,並在必要時創建訂單是

@foo = A.where(:a => params[:A][:a], :b => params[:A][:b],:c => params[:A][:c]).first_or_create! 

A類具有用於以下驗證,B,C

a's length > 3 & < 15 
b must be true (checkbox must be checked) 
c's length >50 & < 500 

當用戶正在通過在一個空白的形式,我會收到上述線路產生的錯誤。 據我所知,它是由控制器試圖創建一個不符合驗證的對象A引起的。

是去這個使用begin rescue end或錯誤檢查預first_or_create的最佳途徑! ?

回答

1

從你的兩個選項是更好begin rescue end所以你不要重複你已經在型號代碼。

另一種選擇是使用first_or_create沒有感嘆號,因此您的代碼不會引發錯誤,然後你可以顯示查看錯誤。我會說這相當於begin rescue end,因爲您可以在救援部分的視圖中顯示顯示錯誤。

+0

我會給非!去看看它是否沒有破壞任何東西。感謝您的高舉。 – Derptacos