문제

레일 앱에 4 개의 관련 마이그레이션이 있습니다.

처음 3 개의 마이그레이션은 self.up에서 각각 하나의 테이블을 생성하고 각각의 self.down 방법으로 떨어 뜨립니다.

4 번째 마이그레이션은 데이터를 세 가지 모두 (self.up)에로드하는 갈퀴 작업을 실행합니다. 나는 3 개의 테이블에서 행을 삭제하기 위해이 마이그레이션의 다운 다운을 생각하고 있습니까?

내가 잘못하고 있는가? 아마도 3 개의 테이블을 만들고 self.up에 데이터를로드하고 self.down 방법에 세 테이블을 모두 떨어 뜨리는 하나의 마이그레이션을 만들었을 것입니다.

도움이 되었습니까?

해결책

이것은 틀렸다!

마이그레이션은 데이터 마이그레이션에만 사용해야합니다 모델 당신이 아닙니다 데이터.

Rails 2.3.4는 '씨앗'을 추가합니다. 이것은 db/seeds.rb의 파일입니다. rb는 데이터베이스를 '부트 스트랩'하는 루비 코드를 포함합니다. 카테고리, 조회 테이블 또는 사용자 계정과 같은 데이터베이스의 반 정적 콘텐츠를 만들 수있는 좋은 방법입니다.

그런 다음 간단한 레이크 작업으로 시드 데이터를로드 할 수 있습니다.

rake db:seed

다른 팁

이 작업을 수행하는 옳고 그른 방법은 없습니다. 수행 한 작업을 기반으로 4 번째 마이그레이션은 데이터를 다운 방법으로 내려야합니다. 각 다운은 UP의 동작 만 취소해야합니다.

테이블을 생성하는 마이그레이션에 데이터를로드하는 것은 확실히 필요하지 않습니다. has_many 또는 selds_to 관계를 만드는 3 개의 테이블이있는 경우 데이터를 별도의 마이그레이션에 넣어 관계를 작성한 다음 데이터로드에 사용할 수 있습니다.

그 모든 것을 제외하고, 데이터를로드하는 갈퀴 작업이 있다면, 왜 그 갈퀴 작업을 실행하는 마이그레이션을 귀찮게합니까? 설치의 레이크 작업 부분을 실행하거나 레이크 작업을 사용하여 일부 데모 데이터를로드하거나 언로드하십시오.

일반적으로 마이그레이션 스키마를 계속 집중시키고 독립적으로 전화를 걸고있는 갈퀴 작업에 데이터로드를 넣었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top