답변:
터미널에서 먼저 :
rails g migration change_date_format_in_my_table
그런 다음 마이그레이션 파일에서
레일> = 3.2의 경우 :
class ChangeDateFormatInMyTable < ActiveRecord::Migration
def up
change_column :my_table, :my_column, :datetime
end
def down
change_column :my_table, :my_column, :date
end
end
또한 Rails 3 이상을 사용하는 경우 up
and down
메소드 를 사용할 필요가 없습니다 . 당신은 사용할 수 있습니다 change
:
class ChangeFormatInMyTable < ActiveRecord::Migration
def change
change_column :my_table, :my_column, :my_new_type
end
end
This migration uses change_column, which is not automatically reversible.
To make the migration reversible you can either:
1. Define #up and #down methods in place of the #change method.
2. Use the #reversible method to define reversible behavior.
Rails 3.2와 Rails 4에서 Benjamin의 인기있는 답변 은 약간 다른 구문을 가지고 있습니다.
터미널에서 먼저 :
$ rails g migration change_date_format_in_my_table
그런 다음 마이그레이션 파일에서
class ChangeDateFormatInMyTable < ActiveRecord::Migration
def up
change_column :my_table, :my_column, :datetime
end
def down
change_column :my_table, :my_column, :date
end
end
있다 change_column의 방법은, 단지 새로운 형식으로 날짜로 마이그레이션을 실행합니다.
change_column(:my_table, :my_column, :my_new_type)
AFAIK, 마이그레이션은 스키마를 변경할 때 관심있는 데이터 (예 : 프로덕션)를 재구성하려고 시도합니다. 따라서 그것이 틀린 것이 아니라면 데이터에 신경 쓰지 않는다고 말하면서 원래 마이그레이션에서 날짜와 날짜 시간까지 열 유형을 수정하고 마이그레이션을 다시 실행하는 것이 어떻습니까? (테스트가 있습니다 :)).
rake db:migrate:reset
.