Powiadomienia - jak zaprojektować?

Mam stronkę z koncertami i chciałbym stworzyć taką funkcjonalność, że:

  • użytkownik może obserwować artystę
  • jeżeli się pojawi nowy koncert artysty, to użytkownicy którzy go obserwują dostaną info np.: “Nowy koncert: OSTR - 10.03.2016 - Warszawa”
  • podobnie w przypadku gdy pojawia się jakaś zmiana np. “OSTR - 10.03.2015 - Warszawa, nowa lokalizacja: Klub Stodoła, Warszawa”

Info o tym byłoby widoczne na stronie (tak jak powiadomienia na FB), a także mógłby być wysyłany jakiś mail z info.

Teraz zastanawiam się jak to ogarnąć, mam dwa pomysły(na przykładzie nowego koncertu)

  1. User - UserNotification - Notification - many-to-many
    Przy tworzeniu nowego koncertu tworze tez nowe powiadomienie i odpalam jakiś background job który tworzy odpowiednie UserNotification dla tych którzy obserwowali danego artystę.
  2. User - Notification (has_many, belongs_to)
    Przy tworzeniu nowego koncertu od razu odpalam background job który dla każdego użytkownika tworzy powiadomienie.
    Niestety będzie tutaj duzo powtórzeń
    np.
    user_id, notification_text
    1, “Nowy Koncert OSTR - Warszawa”
    2, “Nowy Koncert OSTR - Warszawa” itd.

Pierwszy pomysł wydaje mi się bardziej zgrabny, ale że zapytanie o powiadomienia dla użytkownika będzie częste, pomyślałem ze druga wersja może być bardziej odpowiednia.

Co o tym myślicie? A może jeszcze inaczej to zrobić?

Możesz zrobić callback - słabe
Możesz ręcznie wywołać kod - słabe

możesz rzucić event (https://github.com/krisleech/wisper - np) i to obsłużyć - dobre