我在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