2013-04-30 84 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"