Ho un'associazione per un utente come user has_many agents
e agent belongs_to user
. nella console di rotaie, sto provando a utilizzare diversi utenti per testare uno scenario particolare e voglio un utente senza agenti, quindi voglio eliminare lo user.agents
. ho provato user.agents.map(&:destroy)
, ma dà errore come ActiveRecord::StaleObjectError: Attempted to delete a stale object
. Ho anche provato user.agents.delete_all
ma anche questo non funziona. Posso cancellare gli agenti utenti con un singolo comando nella console delle rotaie.Elimina console all in
risposta
È meglio utilizzare destroy
perché passa attraverso tutti i Rails magia (callback e simili)
user.destroy #For a single record
user.agents.destroy_all #For a collection
ActiveRecord::StaleObjectError
Is for Optimistic locking, rimuovere tutti i blocchi che hai su di esso prima di tentare di eliminare nuovamente. Controlla se qualcun altro sta utilizzando il sistema o invia i moduli aperti.
Si sta cercando un metodo .destroy_all
. Distrugge tutti i record di una determinata collezione. Quindi user.agents.destroy_all
, restituirebbe un array vuoto per user.agents
.
Non è stato possibile utilizzare .delete_all
perché è un metodo di classe e cancella i record che corrispondono a una determinata condizione. In questo modo, Agent.delete_all(condition)
. Se usato senza una condizione, cancella tutti i record da una tabella abbinata.
Ricordare che i metodi .destroy
sono metodi di istanza. Istanziano un oggetto ed eseguono le richiamate prima di cancellarlo. I metodi .delete
sono metodi di classe e cancellano direttamente un oggetto.
questo funziona per me
user.agents.find_each(&:destroy)
- 1. Elimina errori console con XMLHttpRequest
- 2. Elimina più record dalla console di Rails
- 3. Elimina errore 404 url nella console?
- 4. Revert --all in TortoiseHg Workbench
- 5. Comportamento di all() in python
- 6. Sto usando `all` correttamente?
- 7. Promise .all() con RxJS
- 8. Esiste un'opzione `install all`?
- 9. Linq All Vs Foreach
- 10. Pandas Boolean .any() .all()
- 11. jQuery Click() catch-all?
- 12. HiveQL UNION ALL
- 13. SelectCheckboxMenu - Disabilita "all-selection"
- 14. Annulla git add --all
- 15. Rails catch-all route
- 16. httpd.conf AllowOverride All
- 17. Gestione eccezioni catch-all in Grails
- 18. ALL vs qualsiasi valutazione in SQL Server
- 19. Visual Studio break all in debug
- 20. UNION ALL e LIMIT in MySQL
- 21. Usando UNION ALL in Path STUFF/XML
- 22. Catch-all/wildcard route in Elixir's Phoenix?
- 23. all in one pulsante social oauth/login
- 24. Metodo non definito in Request :: all()
- 25. cerca cartella in Applicazione console
- 26. elimina trigger in quarzo
- 27. Elimina cookie in Webdriver
- 28. "Annullare elimina" in webapplication?
- 29. Elimina record in Doctrine
- 30. Elimina newline in Vim
voglio distruggere 'user.agents' e ho cercato' user.agents.destroy, ma mi dà errore. –
è "user.destroy" o "user.agents.destroy_all". Primo atto su un singolo record, secondo atto su una raccolta – Benj