0

我發現自己做保存時的模型可能是昂貴的(也許是因爲我節省一噸他們)以下:如果保存模型時沒有更改,Rails/ActiveRecord會訪問數據庫嗎?

changed = false 
if user.name_changed? 
    #do some stuff 
    changed = true 
end 
if user.birthdate_changed? 
    #do some other stuff 
    changed = true 
end 
user.save! if changed 

是使用changed不必要的?如果沒有任何改變,user.save!會自動執行任何操作嗎?

使用Rails v3.2.16,但很高興升級到4.0,如果它在這方面效果更好。

回答

0

ActiveRecord的save!方法將總是訪問數據庫。所以是的,你的changed?方法似乎是必要的。

請參閱the documentation on ActiveRecord.save!

+0

如果沒有更改,文檔中沒有提及「save」或「save!」是否訪問數據庫。 –

+0

它說:「如果模型是新的,則在數據庫中創建一條記錄,否則將更新現有記錄。」關鍵詞「現有記錄_更新._」在rails控制檯中試用,當您運行'save!'時,您會看到執行查詢。 –

相關問題