まずあなたの端末で:
Rails g migration change_date_format_in_my_table
それからあなたの移行ファイルで:
Railsが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
およびdown
メソッドを使用する必要はありません。 change
を使うことができます。
class ChangeFormatInMyTable < ActiveRecord::Migration
def change
change_column :my_table, :my_column, :my_new_type
end
end
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 メソッドがあります。新しいタイプとしてdatetimeを使ってマイグレーションの中でそれを実行してください。
change_column(:my_table, :my_column, :my_new_type)
私の知る限り、移行はスキーマを変更するときに気になるデータ(つまり本番)を作り直すことです。それが間違っていない限り、そして彼がデータを気にしないと言っていたので、元のマイグレーションのカラムタイプを日付から日付/時刻に変更してマイグレーションを再実行しないのはなぜでしょうか。 (あなたがテストを持っていることを願っています:))。