Изменение типа столбца с даты на DateTime во время миграции ROR
Мне нужно изменить тип столбца с даты на дату-время для приложения, которое я создаю. Мне все равно, что данные все еще разрабатываются.
Как я могу это сделать?
Ответ 1
Сначала в вашем терминале:
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
Ответ 2
Кроме того, если вы используете Rails 3 или новее, вам не нужно использовать методы up и down. Вы можете просто использовать change:
class ChangeFormatInMyTable < ActiveRecord::Migration
def change
change_column :my_table, :my_column, :my_new_type
end
end
Ответ 3
В 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
Ответ 4
Там есть метод change_column, просто выполните его при переносе с datetime как новый тип.
AFAIK, там есть миграция, чтобы попытаться изменить данные, о которых вы заботитесь (например, производство) при изменении схемы. Поэтому, если это не так, и поскольку он сказал, что он не заботится о данных, почему бы просто не изменить тип столбца в исходной миграции с даты на дату и повторить запуск миграции? (Надеюсь, у вас есть тесты:)).