루비 온 레일즈에서 마이그레이션을 이해하는데 약간의 문제가 있습니다. 나는 (별도의 파일에 저장) 내 응용 프로그램의 db\migrate\
디렉토리에 다음과 같은 두 가지 종류가 있습니다레일즈 - 이해 db : 마이 그 레이션
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.string :name
t.string :email
t.timestamps
end
end
def self.down
drop_table :users
end
end
class AddEmailUniquenessIndex < ActiveRecord::Migration
def self.up
add_index :users, :email, :unique => true
end
def self.down
remove_index :users, :email
end
end
나는이 두 파일을 함께 실행하는 것 방법에 대해 혼란 스러워요. 이 두 번째 클래스를 만들었을 때 Michael Hartl의 책은 "사용자 테이블의 마이그레이션 파일을 편집 할 수는 있지만 롤백을 수행 한 다음 다시 마이그레이션해야합니다. 레일스 웨이는 데이터가 발견 될 때마다 마이그레이션을 사용합니다 모델을 바꿀 필요가 있습니다. " 이 마이그레이션은 실제로 어떻게 작동합니까? 데이터베이스가 마이그레이션 될 때 디렉토리의 모든 파일이 실행됩니까? 장면 뒤에서 무슨 일이 벌어지고 있나?
'db : migrate를 실행하면 레일스는 데이터베이스에 마지막으로 적용된 마이그레이션의 타임 스탬프가 포함 된 데이터베이스의 특수 테이블을 검사합니다 .' 테이블 이름은'schema_migrations'이며 이미 실행 된 마이그레이션 파일의 타임 스탬프를 저장합니다. – rubyprince