2012-10-29 10 views
19

Ich versuche, die Genauigkeit und Skalierungsattribute von Dezimalfeldern (PostgreSQL NUMERIC) in meiner Datenbank zu entfernen?Wie erstelle ich eine Schienenmigration, um Präzision zu entfernen/zu ändern und Dezimal zu skalieren?

Die Felder:

t.decimal "revenue_per_transaction", :precision => 8, :scale => 2 
t.decimal "item_quantity",   :precision => 8, :scale => 2 
t.decimal "goal_conversion",   :precision => 8, :scale => 2 
t.decimal "goal_abandon",   :precision => 8, :scale => 2 
t.decimal "revenue",     :precision => 8, :scale => 2 

Was benötige ich, um meine Migration fügen Sie diese zu unbegrenztem Umfang und Präzision zu ändern, oder die Skala zu erhöhen? Im Moment habe ich die Skala Limit bin schlagen und immer Fehler wie:

ERROR: numeric field overflow 

Hier ist der Kontext: "PG::Error - numeric field overflow" on Heroku

+0

Wesentliches der Suche nach dem rails- Migration Schreibweise 'ALTER TABLE ... ALTER COLUMN ... TYPE NUMERIC'. –

+0

Antwort akzeptieren oder einen Kommentar hinzufügen, warum es nicht akzeptiert wurde? – seokhoonlee

Antwort

46

Format:

change_column(table_name, column_name, type, options): Changes the column to a different type using the same parameters as add_column. 

Zuerst in ihrem Terminal:

rails g migration change_numeric_field_in_my_table 

Dann in Ihrer Migrationsdatei:

class ChangeNumbericFieldInMyTable < ActiveRecord::Migration 
    def self.up 
    change_column :my_table, :revenue_per_transaction, :decimal, :precision => give whatever, :scale => give whatever 
    end 
end 

dann

run rake db:migrate 

Quelle: http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

+1

Vergessen Sie nicht, Antworten zu akzeptieren, übrigens :) –

+1

Wie wäre es mit dem Entfernen von Präzision? – Hamdan

+0

@Hamdan müssten Sie die Genauigkeit/Skalierung auf die Standardwerte einstellen, die sich je nach Datenbank unterscheiden: http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/TableDefinition.html#method-i-column – eirikir

0

In Ihrer Migrationsdatei ändert Ihr Feld: integer und läuft rake db läuft: wandern

+1

Sie benötigen eine neue Migrationsdatei. Die Verwendung derselben Migrationsdatei funktioniert nicht. – NRR

Verwandte Themen