2010-10-15 36 views

回答

1

This question介绍如何使用clone复制您的记录。

假设1000条记录已经在可枚举称为counties,我们最终

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

我已经在我的代码中应用了这种方法。但是通过这段代码,它将创建1000个查询。我们不能用单个查询插入所有这个记录吗? – 2010-10-15 19:53:09

+0

非天生。我建议使用下面发布的SQL,如果这是一个关闭。如果这是您需要定期执行的操作,则可能需要重新考虑数据结构。不过,我确实看到这篇博客文章可能会提供指针:http://rubypond.com/blog/bulk-insertion-of-data-with-activerecord – SamStephens 2010-10-15 20:49:34

+0

我已经使用ar-extension来解决我的问题。 – 2010-10-17 15:11:01

0

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

INSERT INTO NewTable (Col1, Col2, Col3) 
SELECT Col1, Col2, UpdateFunction(Col3) 
FROM County 

哪里COL3是要更新的列,UpdateFunction是你希望使用更新列的功能。

编辑:当然,这是SQL,不是Rails的 - 我没有看够近,在这个问题的标签:-)

+0

我希望同样的事情,但与轨道的方式。 – 2010-10-15 18:48:52

0

@krunalshah你可以建立散列的阵列和阵列传递给

Country.create(array) 

,虽然它将执行多个插入查询。

其他选项使用

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