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