默認情況下設計在RegistrationsController#create
中運行resource.save
而不是resource.save!
。這使得不會引起我的資源驗證錯誤。我確定他們已經考慮過這個問題。我從資源模型中拿出:validatable
但它沒有幫助。如何修改Rails中設計寶石的默認行爲
我的問題是:不設計給這個選項嗎?
默認情況下設計在RegistrationsController#create
中運行resource.save
而不是resource.save!
。這使得不會引起我的資源驗證錯誤。我確定他們已經考慮過這個問題。我從資源模型中拿出:validatable
但它沒有幫助。如何修改Rails中設計寶石的默認行爲
我的問題是:不設計給這個選項嗎?
resource.save!
會造成討厭的500錯誤,如果您的用戶模型處於無效狀態,而resource.save
將添加驗證錯誤的user.errors
哈希,並返回false,所以可以顯示和糾正驗證錯誤。
我不確定爲什麼你可以更喜歡save!
?
你總是可以找到致電救援的例外。兩種方法你都必須檢查是否有錯誤。不過,我不確定何時使用'save!'。你會在哪種情況下使用它? – borjagvo
@rlarcombre,同樣,current_user是'nil',因爲用戶沒有保存,所以你會得到'user.errors'? – borjagvo
如果你調用一個新的模型實例(在這種情況下爲用戶),如果存在驗證錯誤,那麼是的,它不會被保存到數據庫,但是你仍然會在模型實例中存儲模型實例應用錯誤。 因此,在設計RegistrationsController創建動作的情況下,最終用戶將看到註冊表單(新動作),並顯示模型錯誤,以便它們可以根據需要進行更正。無需使用爆炸方法。 – rlarcombe
你想要做什麼?請詳細說明。 –