I have a Task model associated to a Project model via has_many through and need to manipulate the data before delete/insert via the association.
Since "Automatic deletion of join models is direct, no destroy callbacks are triggered." i can not use callbacks for this.
In Task i need all project_ids to calculate a value for Project after Task is saved. How can i disable delete or change delete to destroy on has_many through association? What is best practise for this problem?
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
Seems like i have to use associations callbacks before_add
, after_add
, before_remove
or 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
This is what I did
in the model:
class Body < ActiveRecord::Base has_many :hands, dependent: destroy has_many :fingers, through: :hands, after_remove: :touch_self end
in my Lib folder:
module ActiveRecord class Base private def touch_self(obj) obj.touch && self.touch end end end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With