2012-06-24 5 views
0

레일스 북을 읽을 때마다 새로운 데이터베이스를 만들 때마다 항상 db:migrate을 따르십시오.루비 온 레일즈 : db 목적 : 마이 그 레이션

rails generate scaffold school 
rake db:migrate 

콘솔보기에서 첫 번째 행에서 레일스가 일부 파일을 생성하는데 문제가 없습니다. 하지만 두 번째 줄에서는 Rails가 실제로 아무 것도 변경하지 않는다는 것을 알았습니다. Rails가 거의 생성하고 변경 사항을 볼 수없는 파일을 보았습니다.

그래서 2 행의 목적은 무엇입니까?

고마워요 :)

답변

3

레이크가 변경 사항을 데이터베이스로 마이그레이션합니다. 이전에 생성 된 스캐 폴드 모델과 일치하도록 데이터베이스 스키마를 실제로 변경합니다.

없으면 개체를 쓸 테이블이 없습니다. 또는 모델이 변경된 경우 테이블이 모델과 다를 수 있으며 오류가 발생할 수 있습니다.

모델 (또는 스캐 폴드 모델)을 생성 할 때 마이그레이션 파일이 db/migration 디렉토리에 작성됩니다. 그것은 순수한 텍스트 파일입니다. 원하는 경우 수동으로 만들 수 있습니다. 이것은 데이터베이스와 관련된 레일에서 반복적으로 개발할 수있는 도구입니다. 각 마이그레이션은 시스템에 약간의 변경 사항을 추가합니다. rake db:migrate을 실행하면 지정된 마이그레이션에 따라 데이터베이스가 업데이트됩니다. 분산 개발의 경우 한 프로그래머가 저장소에서 코드를 체크 아웃 할 수 있고 자신의 개발 데이터베이스에서 마이 그 레이션을 실행할 수있는 편리한 도구입니다.

1

db:migrate은 레일스에 새로운 변경 사항으로 데이터베이스를 업데이트하도록 명령하는 명령입니다. 이 방법으로 생각하면

rails generate scaffold 레일즈는 모델, 컨트롤러 등등과 같은 파일을 생성합니다. 데이터베이스를 업데이트하는 SQL 스크립트가있는 db/migrate 아래에 파일을 생성합니다.

예 : 당신이 rails generate scaffold User name:string를 실행하는 경우, 당신은 당신이, 명령,

db:migrate와 폴더 마이그레이션/그 SQL 스크립트가 DB에서 생성되며, 테이블 컬럼의 이름 '으로 데이터베이스의 사용자를 호출해야합니다 당신이 당신의 레일 응용 프로그램 루트에서, rake -T을 실행하면 위의 경우, 데이터베이스에 새 SQL 스크립트를 마이그레이션 레일을 말하고, 그것은 '사용자'테이블

를 생성합니다, 당신은 모든 레이크 작업을 볼 수

HTH :)

관련 문제