2012-10-29 7 views
19

Veri tabanımdaki kesinlik ve ölçek niteliklerini ondalık (PostgreSQL NUMERIC) alanlarından kaldırmaya çalışıyorum?Hassasiyeti kaldırmak/değiştirmek ve ondalık ölçeklendirmek için bir ray geçişini nasıl oluştururum?

alanları:

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 

Ne sınırsız ölçeği ve hassasiyet için bu değiştirmek veya ölçeğini artırmak için benim göç eklemek gerekir? Şu anda ölçek sınırı vuruyorum ve benzeri hataları almak: Burada

ERROR: numeric field overflow 

bağlam var: "PG::Error - numeric field overflow" on Heroku

+0

, göç "ALTER TABLE ... ALTER COLUMN ... TİP NUMERİCİ" yazmanın göç yolu. –

+0

cevabını kabul etmiyor veya neden kabul edilmediğine dair yorum ekliyor musunuz? – seokhoonlee

cevap

46

biçimi:

rails g migration change_numeric_field_in_my_table 
: size terminalde

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

İlk

Ardından taşıma dosyanızda:

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

sonra

run rake db:migrate 

Kaynak: http://api.rubyonrails.org/classes/ActiveRecord/Migration.html Taşıma dosyasında

+1

Cevapları kabul etmeyi unutmayın, bu arada :) –

+1

hassaslığın kaldırılmasına ne dersiniz? – Hamdan

+0

@Hamdan, hassas/skalayı veritabanınıza bağlı olarak varsayılan değerlere ayarlamanız gerekir: http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/TableDefinition.html#method-i-column – eirikir

0

sizin alanını değiştirin: tamsayı ve çalıştırmak tırmık db çalıştırın: rails- arayan Esasen

+1

Yeni bir geçiş dosyasına ihtiyacınız var. Aynı geçiş dosyasını kullanmak işe yaramayacaktır. – NRR

İlgili konular