ruby on rails - Model callbacks not working with self referential association -
i having model evaluation has many sub evaluations (self refential)
class evaluation < applicationrecord has_many :sub_evaluations, class_name: "evaluation", foreign_key: "parent_id", dependent: :destroy before_save :calculate_score def calculate_score # end end i creating , updating evaluation sub evaluations nested attributes.
calculate_score method triggered on sub evaluation creation not while updating. have tried before_update , after_validation. nothing seems working.
evaluation form
= form_for @evaluation |f| ... = f.fields_for :sub_evaluations |sub_evaluation| ... what seems issue?
this article helped me fix issue.
child callback isn't triggered because parent isn't "dirty".
the solution in article "force" dirty calling attr_name_will_change! on parent attribute that, in fact, not change.
here updated model code:
class evaluation < applicationrecord has_many :sub_evaluations, class_name: "evaluation", foreign_key: "parent_id", dependent: :destroy before_save :calculate_score def calculate_score # end def exam_id= val exam_id_will_change! @exam_id = val end end see active model dirty in rails api
Comments
Post a Comment