2013-05-20 1 views
0

나는 지금까지 약 일주일 전에 내 첫 번째 응용 프로그램에서 열을 제거하기 위해 마이그레이션을했다 : half_or_full 내 스키마에 여전히 있기 때문에열을 제거하지 못했던 마이그레이션을 수정하려면 어떻게합니까?

class RemoveHalfOrFullFromFurlough < ActiveRecord::Migration 
    def up 
    remove_column :furloughs, :half_or_full 
    end 

    def down 
    add_column :furloughs, :half_or_full, :decimal 
    end 
end 

내가 뭔가 잘못해야합니다. Active Admin gem을 추가하려고 할 때까지는 예고하지 못했습니다. 이 좀비 칼럼에서 데이터를 가져 오려고 시도하기 때문에 오류가 발생하며이를 어떻게 처리해야할지 모릅니다.

이후 많은 마이그레이션을 수행 했으므로 간단한 롤백이 옵션이라고 생각하지 않았습니다. 어쩌면?

이 열 만든 원래의 마이그레이션입니다 :

class AddHalfOrFullToFurloughs < ActiveRecord::Migration 
    def change 
    add_column :furloughs, :half_or_full, :decimal 
    end 
end 
+0

원래 마이그레이션 (half_or_full 열을 만든 마이그레이션)은 어떻게 생겼습니까? –

+0

@Anand가 원래 게시물로 편집했습니다. – Alaric

+1

'rake db : migrate : down VERSION = xxxxxxxxxxxxxx'로 특정 마이그레이션을 롤백하고'--trace'를 추가하여 어떤 에러가 발생하는지 확인할 수 있습니다. –

답변

0

여기 마이그레이션에 대한 나의 철학은 : 나는 개발 단계에있어 동안

, 마이그레이션의 아이디어는 내가 만들 수 있다는 것입니다 up 섹션의 변경 사항을 확인한 다음 down 섹션에서 변경하십시오. 내 필요에 따라 시작으로 롤백하고 맨 위로 앞으로 굴리거나 중간에서 멈출 수 있습니다. 나는 여전히 시스템을 "개발 중"이고, 나는 데이터베이스가 어느 시점에 있어야하는지에 관한 규칙을 만들고있다. 수평을 제어하고 수직을 제어합니다.

마이그레이션을 디버깅 할 때 때로는 레벨을 한두 개 롤백 한 다음 롤 포워드하여 변경 사항을 세부적으로 조정합니다. 어떤 사람들은 우리가 전진 만하면 모든 것이 완전히 재현 될 수 있다고 말합니다. 데이터가 일회성 일 때 다른 마이그레이션으로 어리석은 단계를 실행 취소하는 것이 일반적으로 바람직하지 않으므로 백업하고 조정하여 다른 작업을 수행 할 것입니다. 귀하 또는 다른 사람들의 마일리지는 다를 수 있습니다.

개발 단계에서 테스트 및 생산으로 이동하면 규칙이 변경됩니다. 그 지점에서 데이터베이스와 코드가 꽤 안정되어야하고 "실제"에 대한 데이터를로드하기 때문에 끝까지 롤 포워드하고 거기에 머물러있게됩니다.