2012-07-28 29 views
1

這已在此處提出,但已經過了3年。不幸的是,我們仍然使用Rails 2.3.14,所以這是我現在遇到的一個問題,當時並沒有真正回答。錯誤發生後,Rails不會重置ActiveRecord對象(new_record?)

我有2種型號...

組織 Organizationpermissions

在組織控制器,創建方法,我組織和包裹在一個組織交易Organizationpermissions對象的保存。

如果組織良好保存,沒有錯誤,但Organizationpermission對象失敗,則事務不會正確回滾組織對象。 new_record方法?認爲該對象不再是新的,然後強制我的表單進行更新操作,這是我不想要的。

這是問這裏在09 ...

http://bit.ly/MbYGXd

的結果是,這是一個錯誤的2.3.5,但沒有答案,怎麼去解決它。

有沒有辦法解決這個問題?

感謝

UPDATE:

只是想碰到這個要頂。可能不應該在週末發佈。 :)

我仍然無法弄清楚在這裏做什麼。當引發錯誤並且它不在主對象中時,ActiveRecord對象未設置爲new_record?並且該頁面不再反映創建,現在它是一個更新,這絕對不會起作用。

我可以發誓有一種解決方法,但我無法在任何地方在我的代碼中找到它。

回答

0

我有一個類似的問題,發現如果你將代碼包裝在嵌套的rollback_active_record_state中!塊,然後按預期工作。在我的情況下,該交易在after_create回調中失敗。

ActiveRecord::Base.transaction do 
    @model_a = ModelA.new(params[:model_a]) 
    @model_b = ModelB.new(params[:model_b]) 

    @model_a.rollback_active_record_state! do 
    @model_b.rollback_active_record_state! do 
     @model_a.save! 
     @model_b.save! 
     ... 
    end 
    end  

end 
相關問題