Muszę zmienić typ kolumny z daty na datę i godzinę dla tworzonej przeze mnie aplikacji. Nie dbam o dane, ponieważ wciąż są rozwijane.
W jaki sposób mogę to zrobić?
Muszę zmienić typ kolumny z daty na datę i godzinę dla tworzonej przeze mnie aplikacji. Nie dbam o dane, ponieważ wciąż są rozwijane.
W jaki sposób mogę to zrobić?
Najpierw w twoim terminalu:
rails g migration change_date_format_in_my_table
Następnie w pliku migracji:
Dla szyn> = 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
change
nie zastosowano jednej metody zamiast metodup
idown
, to dlatego, żechange
metoda nie obsługujechange_column
definicji migracji .Ponadto, jeśli używasz Railsów 3 lub nowszych, nie musisz używać metod
up
idown
. Możesz po prostu użyćchange
:źródło
This migration uses change_column, which is not automatically reversible.
To make the migration reversible you can either:
1. Define #up and #down methods in place of the #change method.
2. Use the #reversible method to define reversible behavior.
W Railsach 3.2 i Railsach 4 popularna odpowiedź Benjamina ma nieco inną składnię.
Najpierw w twoim terminalu:
Następnie w pliku migracji:
źródło
Istnieje metoda change_column , po prostu uruchom ją podczas migracji z datetime jako nowy typ.
źródło
AFAIK, migracje mają na celu przekształcenie danych, na których Ci zależy (tj. Produkcji) podczas wprowadzania zmian w schemacie. Więc jeśli nie jest to złe, a ponieważ powiedział, że nie dba o dane, dlaczego po prostu nie zmodyfikować typu kolumny w oryginalnej migracji z daty do daty i godziny i ponownie uruchomić migrację? (Mam nadzieję, że masz testy :)).
źródło
rake db:migrate:reset
.