alanlarını integer
'a dönüştürmem gerekiyor ve bunun yerine enum
kullanın. Verileri kaybetmeden bunu yapmanın en iyi yolu nedir?Sütunlar veri türünü tamsayı ve geri veri koruyarak (postgres) dize arasında geçiş yapmak için 4 geçişi Geçiş
Bu, geçerli taşıma geçerli:
class ChangeColumnsForSystems < ActiveRecord::Migration
def change
change_column :systems, :operation, :integer
change_column :systems, :status, :integer
end
end
Ve güncelleme model dosyası:
class CreateSystems < ActiveRecord::Migration
def change
create_table :systems do |t|
t.string :operation
t.string :status
t.timestamps null: false
end
end
end
Sonra ben gibi alanlarda türünü değiştirmek.
/app/models/system.rb eski verileri güncelleyebilir nasıl
...
enum operation { start: 0, stop: 1 }
enum status { init: 0, working: 1, complete: 2 }
...
? Sen 2 göçün yapabiliriz
Bu göç bozuk tüm veriler, bir ipe '.to_i' çağırdığınızda çünkü, her zaman beklendiği gibi kod 0. Sonraki parça çalışacak alacak olacaktır. Ancak bu en iyi çözüm değil 'sys.operation = System.operations [sys.operation_str]' – Pav31