2015-03-17 3 views
5

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

0

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

+0

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 –

+1

haben Sie rake db laufen: wandern? –

+0

ja noch keine Änderung –

12

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 
+0

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

+0

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