Rails重置单列

Kyl*_*e C 3 activerecord ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我正在尝试实现一个每月运行一次以重置单个列的rake任务.我宁愿将列重置为其默认值,但我找不到任何方法来帮助我完成此操作.reset_column_information不起作用

重置活动记录中单个列的最有效方法是什么?

Tim*_*ers 7

基本方法#update_all直接在数据库中进行更新,因此非常有效.但它会绕过回调,因为未加载模型:http://apidock.com/rails/ActiveRecord/Base/update_all/class

SomeModel.update_all("some_column = 4");  # sets all some_column attributes to 4
Run Code Online (Sandbox Code Playgroud)

将其重置为默认值取决于您首先设置默认值的方式.如果在模型中计算默认值,则必须选择并实例化所有记录,这可能非常慢.如果它在数据库中定义,也许它是可能的,但我认为它将是特定于数据库的.