2015-02-24 93 views
4

在Java中,我们有一批执行类似下面的Java代码:Rails中是否有类似批量更新的内容?

Statement statement = null; 
statement = connection.createStatement(); 
statement.addBatch("update people set firstname='John' where id=123"); 
statement.addBatch("update people set firstname='Eric' where id=456"); 
statement.addBatch("update people set firstname='May' where id=789"); 

int[] recordsAffected = statement.executeBatch(); 

如何做到在轨的ActiveRecord一样吗?

+1

这就是你正在寻找http://api.rubyonrails.org/classes/ActiveRecord/Batches.html#method-i-find_in_batches? – 2015-02-24 11:24:56

+0

例如我有表称为用户,它有列点。我有这个值ID [1,2,3,9,10,15,20]相应的点[2,3,5,1,1,5,5]一次性更新数据库中。像更新用户设置点=(2,3,5,1,1,5,5)其中用户id =(1,2,3,9,10,15,20),但这不是一个正确的SQL命令。 – Vijay 2015-02-24 11:33:42

回答

8

你可以试试这个。看起来像你在追求什么。

# Updating multiple records: 
people = { 1 => { "first_name" => "David" }, 2 => { "first_name" => "Jeremy" } } 
Person.update(people.keys, people.values) 

报价:https://cbabhusal.wordpress.com/2015/01/03/updating-multiple-records-at-the-same-time-rails-activerecord/

要适合这个职位的要求,将其转换为:

people = { 
    123 => { "firstname" => "John" }, 
    456 => { "firstname" => "Eric" }, 
    789 => { "firstname" => "May" } 
} 
Person.update(people.keys, people.values) 

请注意,转换到上述SQL仍然产生多个查询

+0

非常感谢我所需要的。 – Vijay 2015-02-24 12:24:22

+0

向我教授一些东西 – Mingsheng 2015-02-24 12:27:32

+1

感谢您发布您的答案!请注意,您应该在此处发布答案的重要部分,在此网站上,或者您的帖子风险被删除[请参阅常见问题,其中提到的答案几乎不超过链接。](http:// stackoverflow。 com/faq#deletion)如果您愿意,您可能仍然包含该链接,但仅作为“参考”。答案应该独立,不需要链接。 – Taryn 2015-03-04 14:22:35

相关问题