Foo.where(:some_id => 1).update_all(:some_columnn => "1")
這是更新Foo的正確方法嗎?我不想做一個查找和更新對象。如何在不加載ActiveRecord對象的情況下更新列
Foo.where(:some_id => 1).update_all(:some_columnn => "1")
這是更新Foo的正確方法嗎?我不想做一個查找和更新對象。如何在不加載ActiveRecord對象的情況下更新列
是的,這是正確的方式,但要記住,ñ Ò回調或驗證將被執行。
順便說一句,update_all接受條件也。這樣
Foo.update_all({:some_columnn => "1"}, {:some_id => 1})
如果你不想實例化一個對象,這是正確的方法,但要記住,這也意味着它不會執行你的任何模型驗證或回調 - 它直接到SQL更新命令。
您可以使用條件,根據update_all
update_all的API(更新條件=零,選擇= {})
所以,你可以這樣做:
Foo.update_all(:some_column => '1', :some_id => 1)
As of Rails 4,所述條件不再對update_all
方法提供,但是前述回收被代替指定。例如,
# updates everything, as usual
Foo.update_all(some_column: '1')
# update only the specified rows
Foo.where(some_id: 1).update_all(some_column: '1')