2013-04-30 28 views
1

我有一個Micropost表列user_idsender_id(都是整數)。我剛剛添加了sender_id列,並且默認情況下,對於現有表格行,值爲零。作爲一個時間的事情,我希望所有的user_id值複製並粘貼到sender_id列中已存在的行。需要某種遷移?如何更新整個表列

回答

4

您可以從軌控制檯做到這一點。

Micropost.update_all("sender_id = user_id") 
2

我會做遷移裏面,但既然你已經跑了,你可以做它直接在鐵軌控制檯:

Micropost.all.each do |m| 
    m.update_attribute :sender_id, m.user_id 
end 
+0

我不斷收到未定義的方法爲每類微柱。 – Jaqx 2013-04-30 10:43:26

+0

糟糕。錯過了'.all' – AlexBrand 2013-04-30 10:44:27

+0

非常簡單的解決方案就像一個魅力工作,謝謝 – Jaqx 2013-04-30 10:45:35

1

如果它一次性的事情,我建議你只運行一個sql命令來做到這一點。

update micropost set sender_id = user_id; 

如果通過鐵軌,使其運行在控制檯下面一行,

ActiveRecord::Base.connection.execute "update micropost set sender_id = user_id"