2010-02-02 76 views
6

我只是潛入ActiveRecord中,一直未能找到我的問題的答案。如果我正在更新一個對象的屬性,然後調用save()...將ActiveRecord保存到數據庫只有當新值不同於舊值?瞭解Rails中的簡單ActiveRecord更新

比方說,我做這樣的事情:

thing_to_update = Thing.find_or_create_by_code(some_code) 
if thing_to_update.name != some_name 
    thing_to_update.update_attribute(:name, some_name) 
end 

我不想做額外調用數據庫,如果我沒有,因爲我很有可能需要更新大量的對象。我試圖通讀文檔,並沒有提到將新值與舊值進行比較的任何內容。我在這裏錯過了什麼嗎?

感謝

回答

4

的ActiveRecord將如果沒有屬性更改,請更新您的記錄。您可以通過從控制檯調用thing_to_update.save並觀察日誌來自行驗證。 ActiveRecord會加載記錄,但它不會嘗試更新它。