Изменение типа столбца с 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, миграции там, чтобы попытаться изменить данные, которые вы заботитесь о (т. е. производство) при внесении изменений схемы. Поэтому, если это не так, и поскольку он сказал, что его не волнуют данные, почему бы просто не изменить тип столбца в исходной миграции с даты на дату и время и повторно запустить миграцию? (Надеюсь, у вас есть тесты:)).