如何更新整个表列

时间:2013-04-30 10:32:15

标签: ruby-on-rails ruby database

我有一个Micropost表,列user_idsender_id(两个整数)。我刚刚添加了sender_id列,默认情况下,现有表行的值为nil。作为一次性事情,我希望将所有user_id值复制并粘贴到已存在的行的sender_id列中。需要某种迁移吗?

3 个答案:

答案 0 :(得分:4)

您可以从rails控制台执行此操作。

Micropost.update_all("sender_id = user_id")

答案 1 :(得分:2)

我会在迁移中完成它,但是既然你已经运行它,你可以直接在rails控制台中完成它:

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

答案 2 :(得分:1)

如果它是一次性的话我建议你只需运行一个sql命令来执行此操作。

update micropost set sender_id = user_id;

如果必须通过rails进行操作,请在控制台中运行以下行,

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