我在Rails应用程序中有一个包含数十万条记录的表,并且它们只有created_at
时间戳。我添加了编辑这些记录的功能,所以我想添加一个updated_at
时间戳到表中。在我的迁移中添加列时,我想更新所有行以使新的updated_at
与旧的created_at
匹配,因为这是Rails中新创建行的默认值。我可以做一个find(:all)
并遍历记录,但由于表的大小会花费几个小时。我真正想要做的是:在Rails移植中将一列更新为另一列值
UPDATE table_name SET updated_at = created_at;
有没有更好的方式来做到这一点在使用ActiveRecord,而不是执行原始的SQL一个Rails迁移?
+1 - 我最近不得不这样做,并通过ActiveRecord使用SQL。它的速度尽可能快。 – 2011-03-08 01:04:23
'Yourmodel.update_all'update_at = created_at''更好,不是吗?它也适用于范围。 – 2013-05-29 20:05:34