복붙노트

[RUBY-ON-RAILS] 레일 : 의존 => VS 파괴 : 의존 => : DELETE_ALL를

RUBY-ON-RAILS

레일 : 의존 => VS 파괴 : 의존 => : DELETE_ALL를

레일 가이드에서는이 같은 설명은 다음과 같습니다

오른쪽, 냉각. 그러나 파괴되고 삭제되고의 차이는 무엇인가? 나는 모두를 시도하고 같은 일을 할 것으로 보인다.

해결법

  1. ==============================

    1.차이는 콜백이다.

    차이는 콜백이다.

    : DELETE_ALL는 응용 프로그램에서 직접 및 SQL에 의해 삭제됩니다 :

    DELETE * FROM users where compagny_id = XXXX
    

    (가)와 함께 : 파괴, 당신의 모든 자녀들의 인스턴스가있다. 그래서, 당신은 그것을 파괴 할 수없는 경우 또는 각각의 경우 자신의 : 의존, 그 콜백을 호출 할 수 있습니다.

  2. ==============================

    2.다음과 같은 세 가지 형태 중 하나를 취할 수 있습니다 따라 옵션 : 레일 '모델 협회에서 당신은을 지정할 수 있습니다 :

    다음과 같은 세 가지 형태 중 하나를 취할 수 있습니다 따라 옵션 : 레일 '모델 협회에서 당신은을 지정할 수 있습니다 :

  3. ==============================

    3.DELETE_ALL 테이블에서 삭제 *로 자기 테이블에서 여러 데이터를 삭제할 수있는 삭제에게 관련 요소를 파괴보기 어디 필드 = 'XYZ'

    DELETE_ALL 테이블에서 삭제 *로 자기 테이블에서 여러 데이터를 삭제할 수있는 삭제에게 관련 요소를 파괴보기 어디 필드 = 'XYZ'

    : 종속 가능한 옵션 :

    그들의 소유자가 파괴 될 때 연관된 객체 어떻게되는지를 제어합니다. 다음은 콜백으로 구현하고, 레일 참고 순서대로 콜백을 실행합니다. 따라 행동하고 : : 따라서, 다른 유사한 콜백은 영향을 미칠 수 있습니다 의존 동작은 다른 콜백에 영향을 미칠 수 있습니다.

    : 또한 파괴에 원인 모든 연관된 객체를 파괴한다.

    : DELETE_ALL 모든 연관된 객체 데이터베이스에서 직접 삭제됩니다 (콜백이 실행되지 않도록).

    : 무효 원인이 외부 키가 NULL로 설정합니다. 콜백은 실행되지 않습니다.

    : restrict_with_exception은 관련 기록이있는 경우 예외를 발생시킨다.

    : restrict_with_error은 연관된 객체가있는 경우 오류가 소유자에 추가됩니다.

    와 함께 사용하는 경우 : 옵션을 통해, 온 협회는 모델이 belongs_to해야 가입, 삭제 얻을 기록은 오히려 관련 기록보다 기록에 참여할 수 있습니다.

  4. ==============================

    4.DELETE_ALL 사용 하였다 : 실제로 주요 차이점은 때 어떤 콜백이 호출되지 않을 것입니다. 그러나 사용했을 때 (: after_destroy : after_commit ...) 발사 될 콜백 스택 파괴한다.

    DELETE_ALL 사용 하였다 : 실제로 주요 차이점은 때 어떤 콜백이 호출되지 않을 것입니다. 그러나 사용했을 때 (: after_destroy : after_commit ...) 발사 될 콜백 스택 파괴한다.

    따라서, 당신은 터치가있는 경우 : 모델의 선언을 보내고 삭제 된 후 종속 사용하는 것이 좋습니다 : DELETE_ALL 오히려 '의존 : 파괴'.

  5. from https://stackoverflow.com/questions/2797339/rails-dependent-destroy-vs-dependent-delete-all by cc-by-sa and MIT license