5
Foo.where(:some_id => 1).update_all(:some_columnn => "1")

这是更新Foo的正确方法吗?我不想查找和更新对象。

4

4 回答 4

2

是的,这是正确的方法,但请记住,不会执行任何回调或验证

顺便说一句, update_all 也接受条件。像这样

Foo.update_all({:some_columnn => "1"}, {:some_id => 1})
于 2013-07-19T10:57:06.440 回答
2

从 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')
于 2015-12-14T10:22:36.773 回答
0

如果您不想实例化对象,这是正确的方法,但请记住,这也意味着它不会执行您的任何模型验证或回调 - 它直接进入 SQL 更新命令。

更多信息

于 2013-07-19T10:53:52.323 回答
0

你可以使用条件,根据update_all的api

update_all(更新,条件 = nil,选项 = {})

所以你可以这样做:

Foo.update_all(:some_column => '1', :some_id => 1)
于 2013-07-19T10:54:36.087 回答