Changed? dla zagnieżdżonych modeli

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 ?

Kiedyś zacząłem pisać plugin, który śledzi zmiany w zagnieżdżonych modelach, ale nie miałem czasu go dopieścić. Jednak może mój kod będzie jakimś punktem wyjścia: http://github.com/ghandal/nested_changes

Plugin jest dodatkiem do accepts_nested_attributes_for i powinien obsługiwać zmiany, dodawanie oraz oznaczanie obiektów jako ‘do usunięcia’.