2011-07-29 17 views
5

Quería saber si es posible en rieles hacer múltiples actualizaciones y creaciones en una transacción.Creación y actualización de varios modelos en una sola transacción

Quería crear un no. de Products desde cualquier matriz. Pero para cada producto también necesito crear Company y Category para ello.

Así que la idea es como esto

-- Start a transaction 
//create a company 
//create a category 
while product_list 
{ 
    //create a product with company and category created above 
} 
-- end a transcation 

Así que si alguno de los fallaba la creación Quiero que el Updation/creaciones anteriores a la reversión.

Respuesta

10
begin 
    ActiveRecord::Base.transaction do 
    # create a company 
    # create a category 
    while product_list 
    { 
     # create a product with company and category created above 
    } 
    end 
rescue => e 
    # something went wrong, transaction rolled back 
end 
+0

Gracias esto es lo que estaba buscando ... –

+1

Por cierto lo de comandos que usamos para rollbacking la transacción? –

+1

raise ActiveRecord :: Rollback en una transacción causará una reversión. (Esta excepción no se propagará más allá del bloque de transacción, por lo que no es necesario que lo atrape) –

Cuestiones relacionadas