Supongamos que cada Project
has_many
Tasks
.¿Guardar cambios SOLAMENTE a una asociación has_many cuando guarda con éxito el objeto padre?
Si hago
some_project.tasks = list_of_tasks
some_project.save
tareas del proyecto se actualizan incluso si la salvación falla. Si list_of_tasks
consta de nuevos registros, las tareas del proyecto obtienen borrado ¡incluso si el guardado falla! ¡WHOA!
Si falla la operación de guardar, el proyecto debería tener las mismas tareas que tenía antes de empezar a jugar con él. ¿Cómo obtengo este comportamiento y por qué no es el predeterminado?
Esto funciona, pero este enfoque significa que cada vez que actualizo tareas en toda mi aplicación tendré que acordarme de envolverla en una transacción (y estoy seguro de que la olvidaré). Sería mucho mejor si pudiera encapsular este comportamiento en el modelo 'Proyecto' de forma SECA. –
Bueno, defina un método 'replace_tasks (new_tasks)' que hace exactamente eso – glebm