through rails many how has_and_belongs_to_many has foreign example create belongs and active ruby-on-rails ruby-on-rails-3 callback has-many-through

ruby-on-rails - many - rails foreign key



¿Cómo usar devoluciones de llamada en has_many a través de la asociación? (2)

Esto es lo que hice

en el modelo:

class Body < ActiveRecord::Base has_many :hands, dependent: destroy has_many :fingers, through: :hands, after_remove: :touch_self end

en mi carpeta Lib:

module ActiveRecord class Base private def touch_self(obj) obj.touch && self.touch end end end

Tengo un modelo de Tarea asociado a un modelo de Proyecto a través de has_many a través y necesito manipular los datos antes de eliminar / insertar a través de la asociación.

Ya que "la eliminación automática de modelos de unión es directa, no se activan devoluciones de llamada de destrucción " . No puedo usar devoluciones de llamada para esto.

En la Tarea, necesito todos los project_ids para calcular un valor para el Proyecto después de guardar la Tarea. ¿Cómo puedo desactivar eliminar o cambiar eliminar para destruir en has_many a través de la asociación? ¿Cuál es la mejor práctica para este problema?

class Task has_many :project_tasks has_many :projects, :through => :project_tasks class ProjectTask belongs_to :project belongs_to :task class Project has_many :project_tasks has_many :tasks, :through => :project_tasks


Parece que tengo que usar devoluciones de llamada de asociaciones before_add , after_add , before_remove o after_remove

class Task has_many :project_tasks has_many :projects, :through => :project_tasks, :before_remove => :my_before_remove, :after_remove => :my_after_remove protected def my_before_remove(obj) ... end def my_after_remove(obj) ... end end