Jak usunąć obiekt ActiveRecord?
Spojrzałem na Active Record Querying i nie ma nic do usunięcia, co widzę.
Usuń przez
id
,Usuń bieżący obiekt jak:
user.remove
,Czy możesz usunąć na podstawie
where
klauzuli?
ruby-on-rails
rails-activerecord
Blankman
źródło
źródło
User.find_by(username:"bob")
jest dobre do identyfikacji rekordu zniszczyć lub usunąć, zbyt.Jest
delete
,delete_all
,destroy
, idestroy_all
.Dokumenty to: starsze dokumenty i dokumenty Rails 3.0.0
delete
nie tworzy obiektów, podczas gdydestroy
robi. Ogólnie rzecz biorąc,delete
jest szybszy niżdestroy
.źródło
delete
jest szybszy, ale omija wywołania zwrotne, które mogłeś zdefiniować w modeluUser.destroy
User.destroy(1)
usunie użytkownikowiid == 1
i:before_destroy
i:after_destroy
wystąpić wywołania zwrotne. Na przykład, jeśli masz powiązane rekordyPo zniszczeniu użytkownika jego adresy również zostaną zniszczone. Jeśli zamiast tego użyjesz akcji usuwania, wywołania zwrotne nie wystąpią.
User.destroy
,User.delete
User.destroy_all(<conditions>)
lubUser.delete_all(<conditions>)
Uwaga : Użytkownik jest klasą, a użytkownik jest obiektem instancji
źródło
User.destroy_all()
uruchamia wywołania zwrotne, więc zanim cokolwiek usunie, ładuje rekordy. To dwie instrukcje SQL, a nie jedna. Oprócz wpływu na wydajność ma to również wpływ na współbieżność. Bezpieczniejsze połączenie pomija połączenia zwrotne;User.delete_all()
wyda tylko jednoDELETE FROM...
polecenie.