Jak piszesz w trybie Rails? Mam model - Menedżerowie. Chcę usunąć wszystkie rekordy od menedżerów, którzy spełniają warunek, który określa poziom menedżera 5.Szyny - Usuń wszystkie zapisy spełniające warunek
Dziękuję.
Jak piszesz w trybie Rails? Mam model - Menedżerowie. Chcę usunąć wszystkie rekordy od menedżerów, którzy spełniają warunek, który określa poziom menedżera 5.Szyny - Usuń wszystkie zapisy spełniające warunek
Dziękuję.
myślę, że lepiej jest użyć zniszczyć zamiast kasowania:
Manager.where(:manager_level => 5).destroy_all
To powinno działać:
Manager.where(:manager_level => 5).delete_all
Uwaga: To nie usunie rekordy utrzymaniu.
Spróbuj tego:
Manager.delete_all(manager_level: 5)
1. muszę użyć zmiennej aby określić co usunąć. 2. Tabela nie ma indeksu, jest tabelą łączników między 2 innymi tabelami. –
Nie działa dla mnie. Wystąpił błąd z powodu integralności referencyjnej. –
powinno to być zaakceptowaną odpowiedzią, ponieważ inne zapytania próbują WYBRAĆ przed USUWANIEM - prowadząc do problemów z wydajnością na dużych zbiorach danych. – toobulkeh
Zdecydowanie ważne, ale pamiętaj: "Niszczy warunki dopasowania rekordów, tworząc instancję każdego rekordu i wywołując jego metodę niszczenia." (http://apidock.com/rails/ActiveRecord/Relation/destroy_all) Może to być bardzo powolne w przypadku dużych zestawów wyników. –
Tak, myślałem o tym, żeby zachować spójność modeli i takie tam. – MurifoX
@MurifoX - Czy możesz wyjaśnić, dlaczego uważasz, że niszczenie jest lepsze niż usuwanie? Niekoniecznie się z tym nie zgadzam, ale pomoże to w uzyskaniu pełniejszej odpowiedzi. –