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