webentwicklung-frage-antwort-db.com.de

Wie erstelle ich eine Rails-Migration, um Genauigkeit und Skalierung auf Dezimalbasis zu entfernen/zu ändern?

Ich versuche, die Genauigkeits- und Skalierungsattribute aus den Dezimalfeldern (PostgreSQL NUMERIC) in meiner Datenbank zu entfernen.

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 muss ich zu meiner Migration hinzufügen, um diese in unbegrenzten Maßstab und Genauigkeit zu ändern oder um den Maßstab zu erhöhen? Im Moment überschreite ich die Skalengrenze und erhalte Fehler wie:

ERROR:   numeric field overflow

Hier ist der Kontext: "PG :: Error - Numeric Field Overflow" auf Heroku

24
Richard Burton

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

58
Dipak Panchal

Ändern Sie in Ihrer Migrationsdatei Ihr Feld in: integer und führen Sie run rake db: migrate aus

0
jous32