Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何更新整个表列_Ruby On Rails_Ruby_Database - Fatal编程技术网

Ruby on rails 如何更新整个表列

Ruby on rails 如何更新整个表列,ruby-on-rails,ruby,database,Ruby On Rails,Ruby,Database,我有一个Micropost表,表中有user\u id和sender\u id(两个整数)列。我刚刚添加了sender\u id列,对于现有表行,默认情况下它的值为nil。作为一次性工作,我希望将所有user\u id值复制并粘贴到已存在行的sender\u id列中。需要某种类型的迁移?我本来可以在迁移中完成,但由于您已经运行了它,您可以直接在rails控制台中完成: Micropost.all.each do |m| m.update_attribute :sender_id, m.

我有一个
Micropost
表,表中有
user\u id
sender\u id
(两个整数)列。我刚刚添加了
sender\u id
列,对于现有表行,默认情况下它的值为nil。作为一次性工作,我希望将所有
user\u id
值复制并粘贴到已存在行的
sender\u id
列中。需要某种类型的迁移?

我本来可以在迁移中完成,但由于您已经运行了它,您可以直接在rails控制台中完成:

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

我会在迁移过程中完成它,但由于您已经运行了它,您可以直接在rails控制台中完成:

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

如果是一次性的,我建议您运行sql命令来完成这项工作

update micropost set sender_id = user_id;
如果必须使用rails,请在console中运行以下行

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

如果是一次性的,我建议您运行sql命令来完成这项工作

update micropost set sender_id = user_id;
如果必须使用rails,请在console中运行以下行

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

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

Micropost.update_all("sender_id = user_id")

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

Micropost.update_all("sender_id = user_id")

我一直在为micropost class.Oops获取未定义的方法。缺少
.all
我一直在为microsoft class.Oops获取未定义的方法。缺少
。所有