erhalten. Was ist der beste Weg, dies zu tun, ohne Daten zu verlieren?Rails 4 Migration auf Spalten Datentyp aus Zeichenfolge zu ändern, um zu integer und ich brauche <code>string</code> Felder in <code>integer</code> und <code>enum</code> stattdessen verwenden, um zurück zu konvertieren Daten (Postgres)
Dies ist aktuelle Migration:
class CreateSystems < ActiveRecord::Migration
def change
create_table :systems do |t|
t.string :operation
t.string :status
t.timestamps null: false
end
end
end
Dann Art der Felder wie so ich ändern:
class ChangeColumnsForSystems < ActiveRecord::Migration
def change
change_column :systems, :operation, :integer
change_column :systems, :status, :integer
end
end
und Update-Modell-Datei.
/app/models/system.rb
...
enum operation { start: 0, stop: 1 }
enum status { init: 0, working: 1, complete: 2 }
...
Wie ich alte Daten aktualisieren?
alle Daten Diese Migration wird beschädigt, weil, wenn Sie anrufen '.to_i' an einer Schnur, werden Sie immer 0. nächste Stück Code erhalten wird wie erwartet. Es ist jedoch nicht die beste Lösung 'sys.operation = System.operations [sys.operation_str]' – Pav31