Hej, jakiś czas temu musiałem zrobić coś podobnego (chodziło o customowe logowanie aplikacji), na początku zrobiłem to mniej więcej tak: https://stackoverflow.com/questions/16727130/rails-if-has-many-relationship-changed.
Później dodałem callbacki do relacji, wygląda to mniej więcej tak:
has_many :xxx,
dependent: :delete_all,
after_add: :added_callback,
after_remove: :removed_callback do
def added_callback
…
end
def removed_callback ...
end
end
Nie mogę jakoś sformatować kodu
Zwróć uwagę, że metody added_ i removed_ umieściłem w bloku kodu przekazanym do relacji has_many!
Relacje mogą przyjmować jako argumenty code block
Jeżeli chcesz to później wykorzystać w kontrolerze, możesz np. ustawić w modelu attr_reader i ustawiać na true (albo diff’a czy inne wartości).
Osobnym sposobem, przy dużym poziomie komplikacji operacji save/create jest wykorzystanie service objectu, który sprawdzi otrzymane parametry, ustawi sobie flagi i zwróci je na koniec.