Mam app z następujących modeli: User
, Task
i Assignment
. Każde Przypisanie belongs_to
Użytkownika i Zadanie (lub innymi słowy, Zadanie jest przypisane do Użytkownika poprzez Przypisanie).Najlepszy sposób na wysłanie wiadomości e-mail po utworzeniu nowej instancji modelu w Railsach?
Gdy użytkownik zakończy zadanie, zadanie zostanie oznaczone jako ukończone, a aplikacja natychmiast utworzy nowe zadanie (lub innymi słowy, przydzieli zadanie innej osobie).
Natychmiast po utworzeniu tego nowego zadania, Chcę wysłać e-mail do nowego cesjonariusza. Wiem, że mogę to zrobić na jeden z trzech sposobów:
- Jawnie wyślij wiadomość e-mail w moim kontrolerze.
- Wyślij wiadomość e-mail w oddzwonieniu w modelu Przyporządkowanie.
- Utwórz obserwatora w modelu Przyporządkowanie i wyślij wiadomość e-mail pod numerem
after_create
.
Które z tych opcji uważają za najlepsze i dlaczego? Wygląda na to, że # 1 jest zły, ponieważ nie chcę pamiętać o wysłaniu go w każdej akcji, która może zakończyć zadanie. Słyszałem, jak kilka osób mówi, że obserwatorzy Railsów są źli i powinni ich unikać, ale nie jestem pewien, czy to ludzie, którym powinienem zaufać, czy nie. Jakieś inne opinie?
Program TDD to fantastyczny powód, aby korzystać z obserwatorów. O ile ktoś nie będzie bardziej przekonujący, wkrótce cię sprawdzę. – jakeboxer