복붙노트

[RUBY-ON-RAILS] has_many를 통해 대 has_and_belongs_to_many

RUBY-ON-RAILS

has_many를 통해 대 has_and_belongs_to_many

의 차이를 설명해주십시오 관계를 통해 has_and_belongs_to_many 및 has_many. 언제 어디서 어느 하나를 사용 하는가?

해결법

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

    1.지금까지 내가 기억하는 한, has_and_belongs_to_many는 당신에게 당신의 두 가지 모델을 참조하는 간단한 조회 테이블을 제공합니다.

    지금까지 내가 기억하는 한, has_and_belongs_to_many는 당신에게 당신의 두 가지 모델을 참조하는 간단한 조회 테이블을 제공합니다.

    예를 들어,

    스토리는 여러 범주에 속할 수 있습니다. 카테고리는 많은 이야기를 할 수 있습니다.

    Categories_Stories Table
    story_id | category_id
    

    has_many : 당신이 원래 모델 중 하나에 속하지 않는 정보의 다양한 조각을 저장하는 데 사용할 수있는 세 번째 모델을 제공을 통해.

    예를 들면

    사람 많은 잡지를 구독 할 수 있습니다. 잡지는 많은 가입자를 가질 수 있습니다.

    따라서, 우리는 우리에게 앞의 예와 유사한 테이블을 제공합니다 중간에 가입 모델을 가지고 있지만, 추가 속성을 수 있습니다.

    Subscriptions Table
    person_id | magazine_id | subscription_type | subscription_length | subscription_date 
    

    등등.

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

    2.http://guides.rubyonrails.org/association_basics.html#choosing-between-has-many-through-and-has-and-belongs-to-many에서

    http://guides.rubyonrails.org/association_basics.html#choosing-between-has-many-through-and-has-and-belongs-to-many에서

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

    3.엄지 손가락의 제 규칙은 내가 여기에 체크 박스의 목록에 의해 얻을 수있다? 그렇다면, 다음은 HABTM 협회입니다. 단순히 예보다 관계에 대해 더 캡처에있는 확인란을해야하는 경우 / 더이 속한 다음 has_many을 사용하지 :을 통해. HABTM는 simple_form의 collection_check_boxes으로 _ids 방법을 사용하여 단순하게된다. Has_many : 통해 자주 accepts_nested_attributes_for 포함한다.

    엄지 손가락의 제 규칙은 내가 여기에 체크 박스의 목록에 의해 얻을 수있다? 그렇다면, 다음은 HABTM 협회입니다. 단순히 예보다 관계에 대해 더 캡처에있는 확인란을해야하는 경우 / 더이 속한 다음 has_many을 사용하지 :을 통해. HABTM는 simple_form의 collection_check_boxes으로 _ids 방법을 사용하여 단순하게된다. Has_many : 통해 자주 accepts_nested_attributes_for 포함한다.

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

    4.당신은 has_many를 사용해야합니다 : 당신이 가입 모델을 검증, 콜백, 또는 추가 속성을 필요로하는 경우를 통해.

    당신은 has_many를 사용해야합니다 : 당신이 가입 모델을 검증, 콜백, 또는 추가 속성을 필요로하는 경우를 통해.

  5. ==============================

    5.당신이 테이블 조인에 여분의 데이터 나 검증이 필요하지 않을 경우 : 답변의 대부분은 당신을 통해 has_and_belongs_to_many 대에 has_many를 사용해야 명확하게.

    당신이 테이블 조인에 여분의 데이터 나 검증이 필요하지 않을 경우 : 답변의 대부분은 당신을 통해 has_and_belongs_to_many 대에 has_many를 사용해야 명확하게.

    그러나이 방법을 복용 조심. 응용 프로그램 개발의 초기 단계에서는 추가 기능 또는 검증이 프로젝트의 라이프 사이클의 먼 미래에해야 할 수 있습니다 알고 거의 불가능하다. 당신은 has_and_belongs_to_many를 사용하기로 결정하고, 길 아래에 간단한 데이터 포인트 또는 유효성 검사 이년을 추가하려면이 변화를 마이그레이션하는 것은 매우 어려운 및 버그가 발생하기 쉬운 것입니다합니다. 안전을 위해, has_many에 기본 : 통해

  6. ==============================

    6.적어도 당신이 테이블에 타임 스탬프를 추가 할 수 있기 때문에,를 통해 내 경험에서 그것을 사용 has_many 항상 낫다. HABTM를 통해 연결되어있는 일부 액티브 오브젝트를 디버깅하는 동안 여러 번, 나는 타임 스탬프 updated_at, created_at을 누락되었습니다. 그래서 때문에 관계가 생성되거나 업데이트 된 때 당신이 "블라인드"입니다 않고, 시간의 맥락에서 데이터 관계에 문제를 조사, 디버그에 당신을 도울 수 있음을 유의하십시오.

    적어도 당신이 테이블에 타임 스탬프를 추가 할 수 있기 때문에,를 통해 내 경험에서 그것을 사용 has_many 항상 낫다. HABTM를 통해 연결되어있는 일부 액티브 오브젝트를 디버깅하는 동안 여러 번, 나는 타임 스탬프 updated_at, created_at을 누락되었습니다. 그래서 때문에 관계가 생성되거나 업데이트 된 때 당신이 "블라인드"입니다 않고, 시간의 맥락에서 데이터 관계에 문제를 조사, 디버그에 당신을 도울 수 있음을 유의하십시오.

  7. from https://stackoverflow.com/questions/2780798/has-and-belongs-to-many-vs-has-many-through by cc-by-sa and MIT license