Как удалить объект ActiveRecord?
Я просмотрел Active Record Querying, и у него нет ничего, что можно было бы удалить.
-
Удалить с помощью
id
, -
Удалите текущий объект, например:
user.remove
, -
Можете ли вы удалить на основе предложения
where
?
Как удалить объект ActiveRecord?
Я просмотрел Active Record Querying, и у него нет ничего, что можно было бы удалить.
Удалить с помощью id
,
Удалите текущий объект, например: user.remove
,
Можете ли вы удалить на основе предложения where
?
Это destroy
и destroy
destroy_all
методы, такие как
user.destroy
User.find(15).destroy
User.destroy(15)
User.where(age: 20).destroy_all
User.destroy_all(age: 20)
В качестве альтернативы вы можете использовать delete
и delete_all
которые не будут :before_destroy
:after_destroy
вызовы :before_destroy
и :after_destroy
или любые зависимые опции ассоциации.
User.delete_all(condition: 'value')
позволит вам удалить записи без первичного ключа
Примечание: из комментария user.destroy
не будет работать, если у модели User нет первичного ключа.
Примечание 2: Из комментария @pavel-chuchuva, destroy_all
с условиями и delete_all
с условиями устарели в Rails 5.1 - см. Guides.rubyonrails.org/5_1_release_notes.html
Существует delete
, delete_all
, destroy
и destroy_all
.
Документы: старые документы и Rails 3.0.0 docs
delete
не создает объекты, а destroy
делает. В общем случае delete
быстрее, чем destroy
.
User.destroy
User.destroy(1)
удалит пользователя с id == 1
и :before_destroy
и :after_destroy
обратными вызовами. Например, если у вас есть связанные записи
has_many :addresses, :dependent => :destroy
После уничтожения пользователя его адреса также будут уничтожены. Если вместо этого вы используете действие удаления, обратные вызовы не будут выполняться.
User.destroy
, User.delete
User.destroy_all(<conditions>)
или User.delete_all(<conditions>)
Уведомление: Пользователь - это класс, а пользователь - объект экземпляра