W Railsach i ActiveRecord fajne jest jest to, że oferuje naprawdę solidny zestaw narzędzi do obsługi błędów i sprawdzania poprawności. To dzięki opcji :dependent
.
Jeśli nie chcemy od razu niszczyć wydarzeń (z jednej kolekcji), w rzeczywistości wolelibyśmy, aby pozostały i mogliśmy po prostu zastąpić gospodarza (z drugiej kolekcji). Kurczę, może moglibyśmy zautomatyzować zapraszanie najbardziej aktywnych użytkowników powiązanych z tym wydarzeniem na nowego gospodarza! Zakładając, że podoba nam się kierunek automatyzacji, potraktujmy ten pomysł jako myśl przewodnią i zobaczmy, jakie mamy opcje.
Opcje:dependent
oferują nasze powiązane dane!
Zapożyczone bezpośrednio z dokumentacji Rails:
zero nic nie rób (domyślnie).
:destroy powoduje również zniszczenie wszystkich powiązanych obiektów.
:destroy_async niszczy wszystkie powiązane obiekty w zadaniu w tle. OSTRZEŻENIE: Nie używaj tej opcji, jeśli skojarzenie jest wspierane przez ograniczenia klucza obcego w Twojej bazie danych. Działania ograniczające klucz obcy będą miały miejsce w tej samej transakcji, która usuwa jej właściciela.
:delete_all powoduje usunięcie wszystkich powiązanych obiektów bezpośrednio z bazy danych (więc wywołania zwrotne nie zostaną wykonane).
:nullify powoduje ustawienie kluczy obcych na NULL. Typ polimorficzny również zostanie unieważniony w przypadku powiązań polimorficznych. Wywołania zwrotne nie są wykonywane.
:restrict_with_exception powoduje zgłoszenie wyjątku ActiveRecord::DeleteRestrictionError, jeśli istnieją powiązane rekordy.
:restrict_with_error powoduje dodanie błędu do właściciela, jeśli istnieją powiązane obiekty.