Ich muss t.integer :mark_up
zu einem float
ändern Wie kann ich das tun? Ich habe versucht, in meinem Terminal rails g migration change_column(:stakes, :mark_up, :float)
durch immer erhalten syntax error near unexpected token ('
Integer in Floatspalte-Tabelle ändern Rails
Antwort
Sie können nicht Schienen-Code (change_column
) in Ihrem Terminal verwenden.
Was Sie tun müssen, ist zunächst die Migration erstellen: rails generate migration ChangeMarkUpType
und dann Ihren Rails-Code in die Datei, die erstellt wurde.
Sie können mehr über Migrationen lesen here
In Ihrem Terminal:
rails generate migration ChangeMarkUpToFloat
und in der Datei, die erstellt wird: db/migrate/2015xxxxxxxxxx/change_mark_up_to_float.rb
bearbeiten es:
class ChangeMarkUpToFloat < ActiveRecord::Migration
def change
change_column :stakes, :mark_up, :float
end
end
und dann zurück in Ihrem Terminal:
rake db:migrate
Dies ist in Ordnung, wenn die App nicht in Produktion ist. Wenn die App in Produktion ist, würde ich empfehlen, die Anleitung des Engineyard zu befolgen [0 Zero Downtime Deployment] (https://blog.engineyard.com/2011/zero-downtime-depploies-with-migrations) – bsvin33t
Sei vorsichtig mit dem 'change 'Methode, wenn eine Migration wirklich nicht reversibel ist. Wenn Sie "rake db: migrate: down" ausgeführt haben, woher soll dann der zu konvertierende Typ sein? Erwägen Sie stattdessen, "hoch" und "runter" zu definieren. – maaachine
ok habe ich das und Veränderung als change_column definiert: dem Spiel steht,: mark_up,: float aber mein Schema zeigt immer noch, dass: mark_up eine ganze Zahl ist –
haben Sie rake db laufen: wandern? –
ja noch keine Änderung –