ID 열이없는 테이블이 있습니다. ActiveRecord를 사용하여 삭제하려고하면 생성 된 SQL은 분명히 작동하지 않는 DELETE FROM table_name WHERE ID=NULL
입니다. ActiveRecord를 사용하여 테이블에서 삭제할 수있는 방법이 있습니까? 아니면 적어도 SQL 삽입 쿼리에 영향을주지 않으므로 자리 표시자를 사용하여 원시 SQL 삭제 쿼리를 실행해야합니까?어떻게 루비 ActiveRecord에서 ID 열없이 레코드를 파괴 할 수 있습니까?
17
A
답변
24
ActiveRecord의 delete_all 메소드를 사용해 보셨습니까? 여기에 내 샌드 박스에서 발췌 한 것입니다 :
는>> customer = Customer.new(:login => 'foo')
=> #<Customer id: nil, status: 0, name: nil, login: "foo", password: nil, salt: nil, api_key: nil, address: nil, town: nil, state: nil, country: "USA", zipcode: nil, balance: #<BigDecimal:1032669b0,'0.0',9(18)>, discount: 0, last_four_cc: nil, auto_renew: false, contact_name: nil, contact_email: nil, domain: "anon.limelock.com", created_at: nil, updated_at: nil>
>> customer.save
=> true
>> Customer.all.count
=> 4
>> Customer.delete_all(:login => 'foo')
=> 1
>> Customer.all.count
=> 3
생성 된 SQL은 DELETE FROM `customers` WHERE (`customers`.`login` = 'foo')
체크 아웃 documentation
8
관련 문제
- 1. 어떻게 Window를 올바르게 파괴 할 수 있습니까?
- 2. 어떻게 UserControl 자체를 파괴 할 수 있습니까?
- 3. 컨텍스트를 파괴 할 수 있습니까?
- 4. 루비 프로필 테스트를 어떻게 할 수 있습니까?
- 5. 클래스 인스턴스 자체를 파괴 할 수 있습니까?
- 6. 자바 애플리케이션 서버는 스레드를 파괴 할 수 있습니까? 그렇다면 어떻게?
- 7. 루비 : ID
- 8. 이것을 어떻게 루비 노코 기리로 번역 할 수 있습니까?
- 9. Castle ActiveRecord에서 사용하는 연결을 어떻게 바꿀 수 있습니까?
- 10. 어떻게 부분적으로 부모로부터 관련 레코드를 추가 할 수 있습니까?
- 11. 그리드 뷰에서 들어오는 레코드를 어떻게 최적화 할 수 있습니까?
- 12. 어떻게 has_many 관계의 레코드를 구별 할 수 있습니까?
- 13. 루비 레일에서 will_paginate를 어떻게 현지화 할 수 있습니까?
- 14. 개미에서 펄과 루비 스크립트를 어떻게 할 수 있습니까?
- 15. 루비 스프레드 젬 어떻게 숫자를 정렬 할 수 있습니까?
- 16. 파괴 SQL 쿼리는 어떻게 미리 볼 수 있습니까?
- 17. ActiveRecord에서 하드 코드 된 가상 레코드를 만드는 방법은 무엇입니까?
- 18. 참조가 남아 있어도 클래스 인스턴스를 파괴 할 수 있습니까?
- 19. "deploy cap : setup"은 BASH를 파괴 할 수 있습니까?
- 20. 원격 서버에서 루비 디버그를 할 수 있습니까?
- 21. 루비 보석은 무엇을 할 수 있습니까?
- 22. 논리적 파괴
- 23. CKEditor : 어떻게 흐림에 인스턴스를 파괴?
- 24. CastleProject ActiveRecord에서 일괄 저장
- 25. 어떻게 PHP와 MySQL에서 이전 레코드를 지우지 않고 레코드를 업데이트 할 수 있습니까?
- 26. DataTable이 기본 키 열없이 병합
- 27. asp.net mvc3에서 페이징을 어떻게 할 수 있습니까?
- 28. ActiveRecord에서 유효성 확인 검사를 건너 뛸 수 있습니까?
- 29. 루비 : 설정 방법이 구문을 사용하여 데이터베이스에서 레코드를 찾을 수 있습니다 루비 온 레일즈 캐시
- 30. 함께 링크 된 데이터베이스에 레코드를 어떻게 쉽게 보관할 수 있습니까?
이것이 방법입니다. 나는 이것에 대답하려고했다. –
모든 경우에 적용되는 것은 아닙니다. 모델 게임과 모델 AppVersion이 있습니다. 게임 has_many : app_versions. 'Game.first.app_versions.delete_all'은 'DELETE FROM'app_versions 'WHERE'app_versions '. "= NULL을 생성합니다. 이는 오류입니다. –
Rails 4.2에서는 릴레이션에서'.delete_all' 메쏘드에 forelying_keys에 null을 설정하는'nullify'와 실제로 그 객체들을 제거하는': delete_all'을 전달할 수있는 옵션이 두 가지 밖에 없다고합니다. 기본값은': nullify'입니다. – mariowise