Изменение типа столбца с даты на 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 как новый тип.

change_column(:my_table, :my_column, :my_new_type)

Ответ 5

AFAIK, там есть миграция, чтобы попытаться изменить данные, о которых вы заботитесь (например, производство) при изменении схемы. Поэтому, если это не так, и поскольку он сказал, что он не заботится о данных, почему бы просто не изменить тип столбца в исходной миграции с даты на дату и повторить запуск миграции? (Надеюсь, у вас есть тесты:)).