[ruby-on-rails] ActiveRecord 객체를 어떻게 삭제합니까?

ActiveRecord 객체를 어떻게 삭제합니까?

Active Record Querying을 살펴본 결과 삭제할 수있는 항목이 없습니다.

  1. 에 의해 삭제 id,

  2. 현재 개체를 같이 삭제 user.remove,

  3. where조항에 따라 삭제할 수 있습니까 ?



답변

그것 destroydestroy_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콜백 하지 않거나 종속 연결 옵션을 사용할 수 있습니다.

User.delete_all(condition: 'value') 기본 키없이 레코드를 삭제할 수 있습니다

참고 : @hammady의 의견에서 user.destroyUser 모델에 기본 키가 없으면 작동하지 않습니다.

참고 2 : Rails 5.1에서는 @ pavel-chuchuva의 의견에서 destroy_all조건과 delete_all조건이 더 이상 사용되지 않습니다-guides.rubyonrails.org/5_1_release_notes.html 참조


답변

delete, delete_all, destroy,와 destroy_all.

: 워드 프로세서는 이전의 문서3.0.0 문서 레일

delete반면 객체를 인스턴스화하지는 않습니다 destroy. 일반적으로 delete보다 빠릅니다 destroy.


답변

  1. User.destroy

User.destroy(1)와 사용자를 삭제 id == 1하고 :before_destroy:after_destroy콜백이 발생합니다. 예를 들어 관련 레코드가있는 경우

has_many :addresses, :dependent => :destroy

사용자가 파괴되면 그의 주소도 파괴됩니다. 삭제 동작을 대신 사용하면 콜백이 발생하지 않습니다.

  1. User.destroy, User.delete

  2. User.destroy_all(<conditions>) 또는 User.delete_all(<conditions>)

공지 : 사용자는 클래스이고 사용자는 인스턴스 객체입니다


답변