2011-11-08 4 views

답변

1

개발 중에 만 마이그레이션을 사용하고 스키마를로드하고 프로덕션에서 데이터베이스를 시드하려는 것이 이상적입니다. 현실에서는 일부 변경 작업을 수행 한 다음 해를 끼치 지 않고 프로덕션 환경에 배포 할 수 있습니다.

마이그레이션을 통해 데이터베이스에서도 반복 작업을 수행 할 수 있습니다. 뭔가를 추가하는 것을 잊어 버릴 염려가 없습니다. 처음 시작할 때 표가 맞다고 생각한대로 테이블을 만들고 나중에 다른 마이그레이션으로 수정할 수 있습니다. 그것은 기본적으로 아이디어입니다. 그것은 하나의 db 스크립트를 모두 걸러냅니다. 모두 일종의 것입니다. 당신은 사용자 이름과 암호를 사용하여 사용자의 모델이 있고 이메일 필드를 추가해야하는 경우 마이그레이션을 적용 할 때

약간의 예를 들어, 단순히이

rails generate migration AddEmailToUser # this is a convention, but you can name it however you want 

class AddEmailToUser < ActiveRecord::Migration 
    def change 
    add_column :users, :email, :string 
    end 
end 

change 방법은 두 가지를 작동 할 , 그리고 그것을 되돌릴 필요가있을 때도 마찬가지입니다. 그것은 깔끔한 Rails 3.1 마술과 같습니다. 그냥 rake db:migrate을 실행하고 모든 것이 잘 작동합니다, 마이그레이션을 추가 한 후에

마이그레이션의 이전 버전이

class AddEmailToUser < ActiveRecord::Migration 
    def up 
    add_column :users, :email, :string 
    end 

    def down 
    remove_column :users, :email 
    end 
end 

과 같을 것이다. 마이그레이션의 큰 장점은 사용자가 수동으로 엉망 데이터베이스를하는 경우, 당신은 쉽게 단지

rake db:drop 
rake db:create 
rake db:migrate 

또는

rake db:migrate:reset # this might not work if you messed up your migrations 

을 할 수 있다는 것입니다 그리고 당신은 데이터베이스의 올바른 버전

+0

나 '만든 마스터 링에 어려움이 있습니다. 아무 래도 나는 그것을 잘못 사용하고 있습니다. 왜냐하면 더 많은 열을 추가 할 때 테이블에 이미 일부 열이 이미 있다는 것을 알려주기 때문입니다. 마이그레이션을 사용하는 방법을 읽을 수있는 곳으로 안내 할 수 있습니까? – Roman

+0

@Am. 레일 가이드를 살펴보십시오 http://guides.rubyonrails.org/migrations.html –

0

마이그레이션은 데이터베이스 스키마의 변경 사항을 추적합니다. 그것으로 인한 모든 변경 (컬럼의 이름 변경, 테이블 변경, 인덱스 추가 등)은 마이그레이션을 통해 이루어져야합니다. 덕분에 여러 프로덕션 서버에 변경 사항을 배포하는 것이 매우 쉽습니다.

관련 문제