Szyny: usuń kaskadę i zniszcz zależne
Zakładając, że mam dwie tabele:users
iorders
. Użytkownik ma wiele zamówień, więc oczywiście w tabeli moich zamówień jest klucz obcy user_id.
Jaka jest najlepsza praktyka w szynach (pod względem szybkości, stylu i integralności referencyjnej), aby zapewnić, że jeśli użytkownik zostanie usunięty, wszystkie zlecenia zależne zostaną również usunięte? Rozważam następujące opcje:
Przypadek 1. Używanie:dependent => :destroy
w modelu użytkownika
Przypadek 2. Definiowanie rozkazów tabeli w postgres i pisanie
user_id integer REFERENCES users(id) ON DELETE CASCADE
Czy jest jakiś powód, dla którego powinienem użyć Przypadku 1? Wydaje się, że sprawa 2 robi wszystko, co chcę, aby to zrobić? Czy istnieją różnice w szybkości wykonywania?