2013-06-29 3 views
0

레일스에서 ​​다른 모델의 기초로 사용하고자하는 모델이 있습니다.레일에서 모델 복제하기

예를 들어, 모델 부모은 모델 아동의 템플릿이됩니다. 나는 두 가지 옵션을 볼 수

(1) 추가 열

Class Parent < ActiveRecord::Base 
Class Child < Parent 

(2) model.rb 파일을 복사하고 추가 새로운 기능

Class Child < ActiveRecord::Base 
를 추가 한 후 첫 번째 모델에서 상속

두 경우 모두 모델의 "레일"부분이 생성되지만 데이터베이스 테이블은 어떻습니까? 내가 테이블을 만들 수 있습니다 선택 * 부모로부터 1 = 2 다음 추가 열을 추가하기 위해 마이 그 레이션을 만들지 만 "레일 방식"처럼 보이지 않습니다.

기존 테이블을 기반으로하는 마이그레이션을 쉽게 만들 수 있습니까? 또는 나는 틀린 나무를 완전히 짖고 있냐?

답변

2

귀하의 (1)은 single table inheritance (STI)입니다. 기본적으로 부모와 자식 필드가 모두있는 테이블 하나를 사용합니다. 또한 객체의 유형을 식별하려면 type 열이 필요합니다.

자세한 내용이 없으면 귀하의 케이스에서 STI를 사용하는 것이 좋은지는 말할 수 없지만 (2) model.rb 복사는 확실히 옳지 않은 것으로 보입니다.

+0

알 수 있습니다. 복사하고 싶지만 상속하지 않는 두 번째 인스턴스는 어떻게됩니까? 수동으로 테이블을 생성해야합니까? – ardochhigh

+0

예, 어린이를위한 별도의 테이블이 필요하지만 코드 복사가 나에게 소리가 나지 않습니다. – Mischa

+1

@ardichhigh 두 개의 다른 모델이 일부 로직을 공유하도록하려면 모듈에 추출 할 수 있습니다. –