[RUBY-ON-RAILS] has_many를 통해 대 has_and_belongs_to_many
RUBY-ON-RAILShas_many를 통해 대 has_and_belongs_to_many
의 차이를 설명해주십시오 관계를 통해 has_and_belongs_to_many 및 has_many. 언제 어디서 어느 하나를 사용 하는가?
해결법
-
==============================
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.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.엄지 손가락의 제 규칙은 내가 여기에 체크 박스의 목록에 의해 얻을 수있다? 그렇다면, 다음은 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.당신은 has_many를 사용해야합니다 : 당신이 가입 모델을 검증, 콜백, 또는 추가 속성을 필요로하는 경우를 통해.
당신은 has_many를 사용해야합니다 : 당신이 가입 모델을 검증, 콜백, 또는 추가 속성을 필요로하는 경우를 통해.
-
==============================
5.당신이 테이블 조인에 여분의 데이터 나 검증이 필요하지 않을 경우 : 답변의 대부분은 당신을 통해 has_and_belongs_to_many 대에 has_many를 사용해야 명확하게.
당신이 테이블 조인에 여분의 데이터 나 검증이 필요하지 않을 경우 : 답변의 대부분은 당신을 통해 has_and_belongs_to_many 대에 has_many를 사용해야 명확하게.
그러나이 방법을 복용 조심. 응용 프로그램 개발의 초기 단계에서는 추가 기능 또는 검증이 프로젝트의 라이프 사이클의 먼 미래에해야 할 수 있습니다 알고 거의 불가능하다. 당신은 has_and_belongs_to_many를 사용하기로 결정하고, 길 아래에 간단한 데이터 포인트 또는 유효성 검사 이년을 추가하려면이 변화를 마이그레이션하는 것은 매우 어려운 및 버그가 발생하기 쉬운 것입니다합니다. 안전을 위해, has_many에 기본 : 통해
-
==============================
6.적어도 당신이 테이블에 타임 스탬프를 추가 할 수 있기 때문에,를 통해 내 경험에서 그것을 사용 has_many 항상 낫다. HABTM를 통해 연결되어있는 일부 액티브 오브젝트를 디버깅하는 동안 여러 번, 나는 타임 스탬프 updated_at, created_at을 누락되었습니다. 그래서 때문에 관계가 생성되거나 업데이트 된 때 당신이 "블라인드"입니다 않고, 시간의 맥락에서 데이터 관계에 문제를 조사, 디버그에 당신을 도울 수 있음을 유의하십시오.
적어도 당신이 테이블에 타임 스탬프를 추가 할 수 있기 때문에,를 통해 내 경험에서 그것을 사용 has_many 항상 낫다. HABTM를 통해 연결되어있는 일부 액티브 오브젝트를 디버깅하는 동안 여러 번, 나는 타임 스탬프 updated_at, created_at을 누락되었습니다. 그래서 때문에 관계가 생성되거나 업데이트 된 때 당신이 "블라인드"입니다 않고, 시간의 맥락에서 데이터 관계에 문제를 조사, 디버그에 당신을 도울 수 있음을 유의하십시오.
from https://stackoverflow.com/questions/2780798/has-and-belongs-to-many-vs-has-many-through by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 이유에 대해 종종 추천 default_scope 레일을 사용? (0) | 2020.02.13 |
---|---|
[RUBY-ON-RAILS] 데이터베이스에 배열을 저장 : 직렬화 된 배열 대 JSON (0) | 2020.02.13 |
[RUBY-ON-RAILS] 다형성 협회는 같은 모델의 여러 단체와 레일 (0) | 2020.02.13 |
[RUBY-ON-RAILS] SCSS 파일의 레일 4 이미지 경로, 이미지 URL 및 자산 URL이 더 이상 작동하지 (0) | 2020.02.13 |
[RUBY-ON-RAILS] 한 번에 사용자 당 고안 제한 한 세션 (0) | 2020.02.13 |