ActiveRecord 객체를 어떻게 삭제합니까?
Active Record Querying을 살펴본 결과 삭제할 수있는 항목이 없습니다.
-
에 의해 삭제
id, -
현재 개체를 같이 삭제
user.remove, -
where조항에 따라 삭제할 수 있습니까 ?
답변
그것 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콜백 하지 않거나 종속 연결 옵션을 사용할 수 있습니다.
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.
답변
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>)
공지 : 사용자는 클래스이고 사용자는 인스턴스 객체입니다
