El comportamiento predeterminado para Ruby on Rails es guardar los cambios realizados a las asociaciones de recolección. ¿Hay alguna forma de cambiar este comportamiento, de modo que pueda modificar las colecciones en la memoria sin los cambios que se escriben en la base de datos.desactivación de ahorro automático a través de la asociación has_many - Desconexión entidad ActiveRecord de la sesión
lo que si tengo dos clases:
class Project < ActiveRecord::Base
has_many :tasks
class Task < ActiveRecord::Base
belongs_to :project
y escribir un código como:
Project.tasks.clear
Project.tasks << task1
Project.tasks << task2
entonces se elimina automáticamente todas las tareas asociadas con el Proyecto y automáticamente escribe los cambios a la db.
Este es un ejemplo artificial de lo que estoy tratando de lograr. Sé que podría utilizar Project.tasks.build() para añadir una nueva tarea a la colección sin que se guarda automáticamente, pero las tareas que estoy añadiendo no son nuevos tasks.They son enlaces a un conjunto limitado de tareas definido en db. Podría pensar en ellos como entradas en una enumeración de tareas. Además Project.tasks.clear golpea inmediatamente el db.
En el mundo Java, usando Hibernate, me desconectaría la entidad de la sesión y ser capaz de modificar la entidad en la memoria hasta volver a conectar y el ahorro.
Gracias
Esto parece ser un problema similar a mi pregunta: http://stackoverflow.com/questions/11353582/delete-associated-records-when-model-is-saved – iblue
¿No viola RoR: has_many logic? –