n00*_*00b 29 mysql ruby-on-rails
我需要将字段的默认值从0更改为3,但是我已经拥有数千条记录,并希望这些记录仅在记录具有默认值0时将值从0更改为3,但是对于其他值,例如1,2,它应该保持不变.我该怎么做?
Dan*_*nne 74
在迁移中,您应该使用方法change_column来更改表设置,如下所示:
change_column :my_models, :attribute_name, :integer, :default => 3
Run Code Online (Sandbox Code Playgroud)
然后更新所有现有记录,而不是循环遍历所有记录并单独更新它们,您可以使用方法update_all,如下所示:
MyModel.update_all({ :attribute_name => 3 }, { :attribute_name => 0 })
Run Code Online (Sandbox Code Playgroud)
第一个参数告诉方法要设置什么值,第二个参数告诉它要更新哪些行的条件.