Mam modele:
[code=ruby]class Booking < AR::Base
has_many :booked_days
end
class BookedDay < AR::Base
belongs_to :booking
has_many :booked_seminars
end
class BookedSeminar < AR::Base
belongs_to :booked_day
belongs_to :seminar
end[/code]
Szukam w jaki sposób zaimplementować powiadomienia o zmianie w powyższych modelach (user ma dostać maila jeśli cokolwiek związanego z rezerwacją się zmieni).
Teraz, jeśli zmieni się jakiś atrybut modelu Booking to sprawa jest prosta dzięki modułowi AR::Dirty Nie wiem natomiast jak ugryźć zmiany w BookedDay czy BookedSeminar.
Scenariusz 1:
User zmienia BookedDays z 1 dnia na 2 dni. W bazie powstaje nowy rekord (do już istniejącego). Z punktu widzenia usera zmieniła się rezerwacja ale z punktu widzenia modelu Booking.changed? => false - to oczywiste
Scenariusz 2:
User zmienia któryś z wybranych BookedSeminars (podczas zmiany te które są w bazie zostają usunięte, powstają zupełnie nowe rekordy. Żadne BookedSeminar.changes tutaj nie zadziała bo nic się z tego punktu widzenia nie zmienia (Dirty nie śledzi nowych rekordów tylko już istniejące).
Słowem potrzbuję modułu, który umożliwi mi śledzenie dowolnych zmian w zagnieżdżonych modelach z poziomu modelu nadrzędnego. Znaszli coś takiego (plugin/gem) dla AR ?