2012-10-29 6 views
19

Próbuję usunąć w mojej bazie danych atrybuty precyzji i skali z pól dziesiętnych (PostgreSQL NUMERIC)?Jak utworzyć migrację szyn, aby usunąć/zmienić precyzję i skalę dziesiętną?

pola:

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 

Czego potrzebuję, aby dodać do mojego migracji, aby zmienić je do nieograniczonej skali i precyzji, lub zwiększyć skalę? W tej chwili mam trafienia limitu skalę i coraz błędy jak:

ERROR: numeric field overflow 

oto kontekst: "PG::Error - numeric field overflow" on Heroku

+0

istocie szuka rails- migracyjny sposób zapisu 'ALTER TABLE ... ALTER COLUMN ... TYPE NUMERIC'. –

+0

zaakceptować odpowiedź lub dodać komentarz, dlaczego nie została przyjęta? – seokhoonlee

Odpowiedz

46

format:

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

pierwsze w was terminalu:

rails g migration change_numeric_field_in_my_table 

Następnie w pliku migracji:

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

następnie

run rake db:migrate 

Źródło: http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

+1

Nie zapomnij przyjąć odpowiedzi, nawiasem mówiąc :) –

+1

co powiesz na usunięcie precyzji? – Hamdan

+0

@Hamdan należy ustawić dokładność/skalę na wartości domyślne, które różnią się w zależności od bazy danych: http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/TableDefinition.html#method-i-column – eirikir

0

W pliku migracji zmienić swoje pole do: Integer i uruchomić run rake db: migrować

+1

Potrzebujesz nowego pliku migracji. Użycie tego samego pliku migracji nie będzie działać. – NRR

Powiązane problemy