我正在尝试实现一个 rake 任务,该任务将每月运行一次以重置单个列。我更愿意将该列重置为其默认值,但我找不到任何方法来帮助我完成此操作。reset_column_information 不起作用
重置活动记录中单列的最有效方法是什么?
我正在尝试实现一个 rake 任务,该任务将每月运行一次以重置单个列。我更愿意将该列重置为其默认值,但我找不到任何方法来帮助我完成此操作。reset_column_information 不起作用
重置活动记录中单列的最有效方法是什么?
基本方法#update_all 直接在数据库中进行更新,因此非常高效。但是它绕过回调,因为模型没有加载:http ://apidock.com/rails/ActiveRecord/Base/update_all/class
SomeModel.update_all("some_column = 4"); # sets all some_column attributes to 4
将其重置为默认值取决于您首先如何设置默认值。如果在模型中计算默认值,那么您将不得不选择并实例化所有记录,这可能会非常慢。如果它是在数据库中定义的,也许有可能,但我认为这将是特定于数据库的。
如果您是铁杆,您也可以在迁移中删除列,然后重新创建它/它们。有时这会快很多。我不会在关键应用程序中自动执行此操作 - 但如果您正在摆弄自己的本地机器并且只想快速测试东西,这可能会很有效。