2011-01-22 4 views
6

Tengo que duplicar un campo BLOB de una tabla a otra y quiero usar una consulta INSERT-SELECT para lograr esto.¿Puedo realizar una operación INSERT-SELECT con la API de Rails?

INSERT INTO target_table (key, data, comment) 
    SELECT 'my key', data, 'some comment' FROM source_table 

se puede hacer esto con la API de Rails?

Por supuesto, siempre pude usar ActiveRecord::Base.connection para enviar una consulta nativa a la base de datos, pero estoy esperando encontrar una "forma de Rails" para hacer esto. (Uno que no involucra en realidad cargar los datos en mi aplicación Rails)

+0

Para aquellos de nosotros que no somos tan conocedores en la navegación de la documentación de Rails, ¿no tendría sentido tener aquí un ejemplo de la API ActiveRecord :: Base.connection? Estoy descubriendo que esto no es obvio para hurgar en los documentos ... – Philip

Respuesta

3

Este es un escenario típico donde usar el SQL directamente usando ActiveRecord::Base.connection tiene sentido y sensibilidad. No es posible que haya ningún camino de rieles como lo describió. Incluso si tuviera que haber uno, debe cargarlo en la memoria e insertarlo en la tabla de objetivos con dos modelos; esto es locura

+3

Tiendo a estar de acuerdo con la declaración de "escenario típico", pero ¿por qué crees que no puede haber ningún camino? Solo considere qué cosas asombrosas puede hacer Arel sin cargar todo en la memoria. –

+0

Gracias DR, es por su comentario anterior que aprendí sobre Arel con Rails-3. ¡Por eso lo voto! Con Arel, una consulta como la que nos ocupa probablemente sea posible. – karthiks

Cuestiones relacionadas