我正在尝试执行每月运行一次以重置单个列的rake任务。我宁愿将列重置为其默认值,但我找不到任何方法来帮助我完成此操作。 reset_column_information不起作用
重置活动记录中单个列的最有效方法是什么?
答案 0 :(得分: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
将其重置为默认值取决于您首先设置默认值的方式。如果在模型中计算默认值,则必须选择并实例化所有记录,这可能非常慢。如果它在数据库中定义,也许它是可能的,但我认为它将是特定于数据库的。
答案 1 :(得分:0)
如果你是硬核,你也可以在迁移中删除列,然后重新创建它们。有时这会更快。我不会自动在关键应用程序中执行此操作 - 但如果您正在摆弄自己的本地计算机并且只是想快速测试内容,那么这可能会有效。