2013-05-30 3 views
4

레일이 처음입니다. 마이그레이션에 대한 질문의 커플 :유효하지 않은 마이그레이션 삭제

  1. 는 내가 더 이상 원하지 않는 마이그레이션을 만들었습니다. 나는 그것을 제거하고 싶다. 올바른 명령이 단순히 rails destroy migration AddMyColumnToMyModel입니까?

  2. 내가 파괴하려는 마이그레이션 이름을 잘못 입력했다고 가정 해보십시오. 존재하지 않는 마이그레이션을 제거하려고하면 어떻게됩니까?

    $ rails destroy migration Blah 
        invoke active_record 
        remove migration.rb 
    

    그것은이 나쁜 일이다 ... 그것은 migration.rb을 제거 말한다?

답변

5
  1. 물론, 그 오른쪽 명령입니다. 다만주의 : 당신이 실제로 이 데이터베이스에 변경 사항을 커밋 rake db:migrate를 사용하여 원치 않는 마이그레이션을 실행 한 경우, 다른 것을하기 전에이 작업을 실행해야합니다 :

    그에 down 방법을 실행하는 일
    rake db:rollback 
    

    당신의 최신 마이그레이션.

    rake db:migrate:down VERSION=20130529014413 
    

    여기서 버전 번호는 최신 마이그레이션에 해당합니다. 그것은 또한 당신과 같이, 대신 하나의 마이그레이션 무리를 롤백해야하는 경우에 STEP 매개 변수를 수행 할 수 있습니다 물론

    rake db:rollback STEP=3 
    

    을, 당신은 단지 원치 않는 마이그레이션을 생성하고 실행하지 않을 경우, 아무것도 돌려 줄 필요가 없습니다. 게시 한 명령을 사용하거나 수동으로 해당 파일을 삭제하면 제거 할 수 있습니다.

    출처 : http://guides.rubyonrails.org/migrations.html#rolling-back

  2. 걱정하지 마세요, 즉 코드에 아무것도 아니에요.

+0

감사합니다. @depa. 따라서 적절한 프로세스는 1) db : 롤백을 실행하고 2) 마이그레이션시 destroy 명령을 실행하는 것입니다. db : rollback에 어떤 매개 변수를 전달해야합니까? 예 : 롤백 할 위치를 어떻게 알 수 있습니까? – Ricky

+0

최신 마이그레이션을 롤백합니다. 업데이트 된 답변을 확인하십시오. 마이그레이션을 생성했지만 실행하지 않은 경우 아무것도 되돌릴 필요가 없습니다. – depa

+0

죄송합니다 @depa,이 db : rollback에 관한 마지막 질문입니다. 나는 마이그레이션에서 정의 된'up'과'down' 메소드가있을 때 그것의 마이그레이션과 롤백 적용에 대응한다는 것을 이해합니다 ... 그러나 마이그레이션에는'change' 메소드 만 있습니다. 이것은 Rails가 적절한 롤백 작업이 무엇인지 자동으로 추측 할 수 있다는 것을 의미합니까? – Ricky