2015-02-24 91 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

相關問題