2011-06-06 47 views
4

在Rails 3中,當你做activeRecord.save時,事務提交還是在方法退出時?當你做activeRecord.save做的事務提交或是當方法退出?

所以我想弄清楚的是如果MySQL保存後寫入權利!或者在我退出定義黑色後保存

def something 
    1000.times do 
     o = Order.new(:name => "Tomas") 
     o.save 
    end 
end 
+1

當您調用「保存」或「保存!」時,它會保存。 :)沒有更多,沒有什麼。也許除了交易的一些情況。 – Schovi 2011-06-06 15:21:24

回答

4

您應該在ActiveRecord object callback chain上讀一下;它解釋了你的對象在引擎蓋下發生了什麼。

基本上,當你調用save的時候,ActiveRecord :: Base對象將按照文檔列出的順序遍歷所有的回調,你可以看到提交發生的地方(在第6步和第7步之間)這個)。 ActiveRecord甚至會在提交後發生回調,以防您確定某些條件邏輯已經提交給數據庫時,但通常我們相信如果save返回true,則一切正常。

所以要明確地回答你的問題,期間你的保存調用,而不是當你退出方法。

+2

對於OP:爲了安全起見,您可以使用'save!'來引發驗證錯誤,而不是隻有'save'返回一個布爾值。 – 2011-06-06 18:47:15

+0

thx,這真的很有用:) – equivalent8 2011-06-09 10:22:09

相關問題