3

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

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

4

2 回答 2

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

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

于 2012-06-25T23:25:31.490 回答
0

如果您是铁杆,您也可以在迁移中删除列,然后重新创建它/它们。有时这会快很多。我不会在关键应用程序中自动执行此操作 - 但如果您正在摆弄自己的本地机器并且只想快速测试东西,这可能会很有效。

于 2016-03-18T23:31:44.007 回答