Ruby on Rails 2.3.5:update_all在ActiveRecord上失败

ran*_*its 0 ruby ruby-on-rails

我正在尝试使用ActiveRecord的update_all更新数据库中的记录集合.输入脚本/控制台.

MyModel.update_all("reserved = 1", :order => 'rand()', :limit => 1000)
Run Code Online (Sandbox Code Playgroud)

ActiveRecord认为订单是一个列,说它是未知的并抛出异常.根据文档,我的语法看起来很清醒.这是RoR 2.3.5.

MyModel.update_all("reserved = 1")单独做的时候,效果很好.

如果我这样做的话

MyModel.update_all("reserved = 1","reserve_type = 2",:order =>"rand()",:limit => 1000)=> 0

0行受影响.

我只是想做: UPDATE MyModel SET reserved=1, reserve_type=2 ORDER BY RAND() LIMIT 1000

Jak*_*mpl 5

由于第二个参数update_all应该是条件,你需要传递一个空的哈希,如下所示:

MyModel.update_all("reserved = 1", {}, {:order => 'rand()', :limit => 1000})
Run Code Online (Sandbox Code Playgroud)

这应该按预期工作.