Ruby on Rails在单个查询中更新多个记录

时间:2016-08-26 12:58:14

标签: mysql sql ruby-on-rails ruby-on-rails-4.2 batch-insert

嗨,我有一个rails应用程序,我想在单个查询中创建多个记录

这是我的代码

   inserts = []

    1000.times do
      inserts.push "user name"
    end

    inserts = inserts.map {|bar| "(#{bar.to_s})"}.join(",")

    ActiveRecord::Base.connection.execute "INSERT INTO `user_dat`.`user_inserts` (`name`) VALUES #{inserts}"

我得到的错误是mysql语法中的错误

INSERT INTO `batch_insert`.`batch_inserts` (`name`) VALUES (user name),(user name),(user name),(user name),(user name),(user name),(user name).... upto 1000

我知道我想要它(“用户名”),(“用户名”) 但我无法实现它可以请某人告诉我如何实现这种价值观格式

2 个答案:

答案 0 :(得分:2)

如果问题只是在用户名周围加上引号,那么答案就是替换字符串inserts = inserts.map {|bar| "(#{bar.to_s})"}.join(",")

inserts = inserts.map {|bar| %Q[("#{bar.to_s}")]}.join(",")

答案 1 :(得分:2)

你有那张桌子的模特吗?然后你可以使用普通的ActiveRecord:

data = 1.upto(10000).map { |i| { name: "User #{i}" } }
User.create data