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.destroy
User 모델에 기본 키가 없으면 작동하지 않습니다.
참고 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>)
공지 : 사용자는 클래스이고 사용자는 인스턴스 객체입니다