Foo.where(:some_id => 1).update_all(:some_columnn => "1")
这是更新Foo的正确方法吗?我不想查找并更新对象。
答案 0 :(得分:2)
是的,这是正确的方法,但请记住,不会执行任何回调或验证。
BTW,update_all也接受条件。喜欢这个
Foo.update_all({:some_columnn => "1"}, {:some_id => 1})
答案 1 :(得分:2)
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')
答案 2 :(得分:0)
如果您不想实例化对象,这是正确的方法,但请记住,这也意味着它不会执行任何模型验证或回调 - 它直接进入SQL更新命令。 / p>
答案 3 :(得分:0)
update_all(updates,conditions = nil,options = {})
所以你可以这样做:
Foo.update_all(:some_column => '1', :some_id => 1)