【问题标题】:Can I use the array of records after batch insert in Activerecord-import gem?在 Activerecord-import gem 中批量插入后,我可以使用记录数组吗?
【发布时间】:2015-02-05 09:39:11
【问题描述】:

所以在自述文件中,它是这样做的

books = []
10.times do |i|
  books << Book.new(:name => "book #{i}") 
end 
Book.import books

但是我们也可以使用books数组做一个循环来进一步修改数组中的每条记录还是不可能的?自述文件中没有说明这种情况

【问题讨论】:

    标签: ruby-on-rails-4 bulkinsert activerecord-import


    【解决方案1】:

    是的,您可以很容易地做到这一点,在导入之前,对象不会发生任何事情,Book.new 只是在内存中创建一个新实例 - 它不会触及数据库。例如

    books = []
    10.times do |i|
      books << Book.new(:name => "book #{i}") 
    end 
    books.each_with_index do |book,i|
      book.name = "new book name #{i}"
    end
    Book.import books
    

    http://ruby-doc.org/core-2.2.0/Enumerable.html

    【讨论】:

    • 是的,我已经考虑过这种情况,但我需要使用从第一次导入创建的 ID 到第二次批量导入。我想知道它是否表现得像一个单独的活动记录插入,我可以在插入后继续使用该变量。
    • 啊,是的 - 我没有正确阅读您的问题。您可以将对象与数据库同步 - Book.import 书籍、:synchronize => 书籍、:synchronize_keys => [:name] - 然后书籍的每个元素都有一个 id 值
    猜你喜欢
    • 2017-08-08
    • 2010-11-19
    • 1970-01-01
    • 2019-12-23
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多