Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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 - Fatal编程技术网

Ruby on rails 如何使用单列更新复制多行

Ruby on rails 如何使用单列更新复制多行,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想通过单列更新复制表中的所有行 例如 表County有1000行,我想用单列更新复制所有行 做这件事的正确方法是什么?假设我对你的理解正确,我会这样做 INSERT INTO NewTable (Col1, Col2, Col3) SELECT Col1, Col2, UpdateFunction(Col3) FROM County 其中Col3是要更新的列,UpdateFunction是要用于更新该列的函数 编辑:当然这是SQL,不是Rails-我没有仔细查看问题的标记:-)描述了如何使用

我想通过单列更新复制表中的所有行

例如

表County有1000行,我想用单列更新复制所有行


做这件事的正确方法是什么?

假设我对你的理解正确,我会这样做

INSERT INTO NewTable (Col1, Col2, Col3)
SELECT Col1, Col2, UpdateFunction(Col3)
FROM County
其中Col3是要更新的列,UpdateFunction是要用于更新该列的函数

编辑:当然这是SQL,不是Rails-我没有仔细查看问题的标记:-)

描述了如何使用
clone
复制记录

假设1000条记录已经在一个名为
countries
的可枚举列表中,我们最终得到

counties.each { |county|  
    county_copy = county.clone
    county_copy.col3 = update_function(county_copy.col3)
    county_copy.save
}

@krunalshah您可以构建一个哈希数组并将该数组传递给

Country.create(array)
,但它将执行多个insert查询

其他选项使用

connection.execute(<<-SQL)
    insert into country1 (col1, col2) 
    select col1, col2 from countries
  SQL

connection.execute(我想用rails way做同样的事情。我已经在我的代码中应用了这个方法。但是用这个代码它将创建1000个查询。我们不能用一个查询插入所有记录吗?不是本机的。如果这是一次性的,我建议使用我在下面发布的SQL。如果这是你需要定期做的事情,你可能需要重新考虑你的数据结构。但是我确实看到了这篇博客文章,它可能提供了一些提示:@krunalshah你可以构建一个哈希数组,并将该数组传递给
Country.create(array)