tutorial rails instalar ejemplos descargar aprender ruby-on-rails ruby-on-rails-3 activerecord arel

ruby on rails - instalar - Cómo implementar la inserción masiva en Rails 3



ruby on rails tutorial (4)

Necesito insertar una matriz de correos electrónicos como registros diferentes en mi tabla de contactos. ¿Cómo puede hacerse esto?

Eg: @email = ["[email protected]", "[email protected]", "[email protected]", ... ]

No quiero usar

@email.each do |email| @contact = Contact.new @contact.email = email @contact.save end

Esta causa n inserta requiere. Solo necesito una única consulta de inserción para insertar estos valores. ¿Cómo se puede hacer esto en Rails 3.0.9 (e idealmente MySQL). Por favor ayuda




También puede probar upsert , que es aproximadamente tan rápido como activerecord-import , pero solo funciona (actualmente) con MySQL, Postgres y SQLite3:

require ''upsert'' Upsert.batch(Contact.connection, Contact.table_name) do |upsert| emails.each do |email| upsert.row(email: email) end end

Tenga en cuenta que esto implica una consulta de base de datos por registro, pero es un "complemento", por lo que no tiene que comprobar si ya existe un registro. En su ejemplo, esto no es una preocupación, pero en la mayoría de las aplicaciones se convierte en uno eventualmente.


activerecord-import implementa la importación AR #

activerecord-import es una biblioteca para insertar datos a granel utilizando ActiveRecord.

mira cómo funciona:

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

El hogar del proyecto está en Github y es wiki .