두 번째 경우 그림 테이블에 employee_id 및 product_id라는 두 개의 외래 키를 추가해야합니다.
곳으로 마이그레이션와 클래스의 이름이됩니다
t.integer :imageable_id
t.string :imageable_type
imagable_type
필드, 즉 사진 테이블에 두 필드를 추가합니다 사진에 첫 번째 경우 t.references :imageable, polymorphic: true
에 당신은이 모델을 연결하고 imagable_id
의를 개최한다 누구 그 기록의 이드.
예를 들어,
이 사진 테이블의
일반적인 행이 그래서 여기
id | name | imagable_id | imagable_type |
1 | pic1 | 1 | Employee |
2 | pic2 | 3 | Product |
모양을, 첫 번째 행의 그림 속할 ID 1. 두 번째 행과 직원의 사진을 들고 직원 모델에 속하는 것 to id를 가진 제품의 그림을 보유한 제품 모델
첫 번째 접근법의 장점 미래에 외래 키를 추가 할 필요없이 다른 모델을 다른 모델과 연결할 수 있습니다.
그냥 라인
has_many :pictures, as: :imageable
를 추가하고 연결이 설정됩니다.
위대한 설명, 감사합니다 :-) –