2012-08-29 2 views
0

내 테이블 중 하나에서 단일 테이블 상속 접근법으로 놀고 싶었습니다. 그래서 나는 새로운 git 브랜치 (명백한 이유로 :)를 만들고 테이블에 대한 STI를 만들었다. 나는 STI는 하나 개의 지점에 고립 어떻게해야합니까,단일 테이블 상속과의 분기 충돌

"The single-table inheritance mechanism failed to locate the subclass:'xxx'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite Transaction.inheritance_column to use another column for that information."

내 질문의 존재 : 지금은 다른 테스트를 실행하는 내 마스터 브랜치로 전환 할 때, 나는 하나의 테이블 상속 오류가? 나는 분기 방식으로 가고 있다고 생각했다. 그것은 내 마스터 브랜치에서 문제를 일으키지 않을 것이다. 제발 조언!

+1

repo에있는 모든 git 브랜치가 동일한 데이터베이스에 연결됩니다. 따라서 한 브랜치에서 마이 그 레이션을 사용하여 테이블에'type' 컬럼을 추가하면이 컬럼은 마스터 브랜치로 다시 전환 할 때 사용할 수 있습니다. – tdgs

답변

1

STI를 사용하는 경우 DB가 변경됩니다.

MySQL 자체는 git이 아님 – DB가 현재 분기와 동기화되어 있는지 확인해야합니다.

옵션은 다음과 같습니다

  • 새, 지점 별 DB를 생성하고 DB의 설정의 기본 환경을 수정.
  • DB를 날려 버리고 migrations/dump/etc를 사용하여 다시 작성하십시오. 초기 데이터를 다시로드합니다.

이 (가 소스 제어에서입니다) 간단한 설정 파일 변경의와 마이그레이션이 간단하고, 분기 별 때문에 내가 처음 (분기 별 DB)쪽으로 경향했습니다. 분기를 제거 할 때 (또는 동시에 수행하는 스크립트를 작성할 때) 추가 DB를 삭제해야합니다.

가능성이 다른 해결책이 있습니다. 사람들이이 답변을 편집하여 포함 시키길 바랍니다.

+0

알았어. 그래서 DB를 동기화하는 가장 좋은 방법은 무엇입니까? 이 때문에 database.yml에 새 db를 생성해야합니까? – bpn

+0

@bpn 그 하나의 옵션은 브랜치 이름을 따서 DB를 만들고 config YAML을 업데이트하는 것입니다. 가장 쉬운 방법 일 수 있습니다. 또 다른 방법은 DB를 날려 버리고 지사의 마이그레이션과 필요한 초기 데이터 (또는 덤프 /로드 등)를 사용하여 데이터베이스를 다시 작성하는 것입니다. –