Ich muss den Spaltentyp für eine von mir erstellte App von Datum auf Datum und Uhrzeit ändern. Die Daten interessieren mich nicht, da sie noch entwickelt werden.
Wie kann ich das machen?
Zuerst in Ihrem Terminal:
Rails g migration change_date_format_in_my_table
Dann in Ihrer Migrationsdatei:
Für 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
Wenn Sie Rails 3 oder neuer verwenden, müssen Sie auch nicht die Methoden up
und down
verwenden. Sie können einfach change
:
class ChangeFormatInMyTable < ActiveRecord::Migration
def change
change_column :my_table, :my_column, :my_new_type
end
end
In Rails 3.2 und Rails 4 hat Benjamins beliebte Antwort eine etwas andere Syntax.
Zuerst in Ihrem Terminal:
$ Rails g migration change_date_format_in_my_table
Dann in Ihrer Migrationsdatei:
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
Es gibt eine change_column Methode, führen Sie sie einfach in Ihrer Migration mit datetime als neuen Typ aus.
change_column(:my_table, :my_column, :my_new_type)
AFAIK, Migrationen sind dazu da, um zu versuchen, Daten, die Sie interessieren (d. H. Produktion), umzugestalten, wenn Sie Schemaänderungen vornehmen. Also, es sei denn, das ist falsch und da ihm die Daten egal sind, warum nicht einfach den Spaltentyp in der ursprünglichen Migration von Datum auf Datum und Uhrzeit ändern und die Migration erneut ausführen? (Hoffe du hast Tests :)).