Mam powiązanie dla użytkownika pod numerem user has_many agents
i agent belongs_to user
. w konsoli szyn, próbuję użyć różnych użytkowników do testowania określonego scenariusza i chcę użytkownika bez agentów, dlatego chcę usunąć user.agents
. Próbowałem user.agents.map(&:destroy)
, ale daje błąd jako ActiveRecord::StaleObjectError: Attempted to delete a stale object
.i próbował nawet user.agents.delete_all
, ale też nie działa. Można usunąć agentów użytkowników za pomocą jednego polecenia w konsoli szyn.Usuń wszystkie w konsoli szyn
Odpowiedz
Lepiej używać destroy
ponieważ przechodzi przez całą magię poręcze (wywołania zwrotne i tak)
user.destroy #For a single record
user.agents.destroy_all #For a collection
ActiveRecord::StaleObjectError
jest dla Optimistic locking, usuń wszystkie zamki masz na niego przed ponowną próbą usunięcia. Sprawdź, czy ktoś inny używa systemu lub prześlij otwarte formularze.
Szukasz metody .destroy_all
. Niszczy wszystkie zapisy danej kolekcji. Tak więc user.agents.destroy_all
, zwróci pustą tablicę dla user.agents
.
Nie można było użyć .delete_all
, ponieważ jest to metoda klasy i usuwa rekordy odpowiadające danemu warunkowi. W ten sposób, Agent.delete_all(condition)
. Jeśli jest używany bez warunku, usuwa wszystkie rekordy z dopasowanej tabeli.
Należy pamiętać, że metody .destroy
są instancjami. Tworzą instancję obiektu i wykonują wywołania zwrotne przed skasowaniem. .delete
metody są metodami klasy i bezpośrednio usuwają obiekt.
Działa to dla mnie
user.agents.find_each(&:destroy)
- 1. Uruchamianie migracji z konsoli szyn
- 2. szyn: Znajdź wszystkie warunki
- 3. Jak wyświetlić zapytania mysql w konsoli szyn
- 4. Zobacz przyczyną wycofania błędu w konsoli szyn
- 5. Przekaż plik skryptu ruby do konsoli szyn
- 6. Usuń wszystkie ukośniki w JavaScript
- 7. Railsy - jak wyłączyć wszystkie rejestrowanie konsoli?
- 8. Usuń wszystkie uprawnienia katalogowe
- 9. Carrierwave wysyłania działa w konsoli szyn, ale nie w ciemno
- 10. Jak znaleźć nazwę bazy danych w konsoli szyn
- 11. Ruby: Class.new wyświetla błąd "Class not initialized" w konsoli szyn
- 12. Jak wprowadzić znaki wielobajtowe w konsoli szyn (lub irb)?
- 13. Pusty katalog (usuń wszystkie pliki)
- 14. Usuń wszystkie zer z tablicy
- 15. Usuń wszystkie przechowywane procedury naraz
- 16. Usuń wszystkie przedmioty z listy
- 17. Usuń wszystkie dzieci z QVBoxLayout
- 18. UIButton usuń wszystkie akcje docelowe
- 19. Usuń wszystkie elementy wewnątrz linelayout
- 20. C# Usuń wszystkie puste podkatalogi.
- 21. Usuń wszystkie inne wiersze w notatniku ++
- 22. Jak usunąć kolumnę z tabeli za pomocą konsoli szyn
- 23. jak dodać dane do bazy danych z konsoli szyn
- 24. Wyłączyć lub usunąć wszystkie połączenia # WriteLine konsoli?
- 25. haml usuń spacje przed kropką po dodaniu szyn link_to, mail_to
- 26. Unieważnij wszystkie pliki w folderze w konsoli w chmurze
- 27. Usuń wszystkie pliki zachowując strukturę katalogów
- 28. Usuń WSZYSTKIE stylizacje/formatowanie z hiperłączy
- 29. Usuń folder i wszystkie pliki/podkatalogi
- 30. Usuń wszystkie atrybuty XML o podanej nazwie
chcę zniszczyć 'user.agents' i starałem' user.agents.destroy, ale daje mi błąd. –
to 'user.destroy' albo' user.agents.destroy_all'. Najpierw jeden akt na jednej płycie, drugi akt w kolekcji – Benj