38 votes

Comment créer une migration rails pour supprimer/modifier la précision et l'échelle sur les décimales ?

J'essaie de supprimer les attributs de précision et d'échelle de decimal (PostgreSQL NUMERIC ) dans ma base de données ?

Les champs :

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

Que dois-je ajouter à ma migration pour passer à une échelle et une précision non limitées, ou pour augmenter l'échelle ? Pour l'instant, je me heurte à la limite d'échelle et j'obtiens des erreurs du genre :

ERROR:   numeric field overflow

Voici le contexte : "PG::Error - débordement d'un champ numérique" sur Heroku

80voto

Dipak Panchal Points 3479

Format :

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

Le premier dans votre terminal :

rails g migration change_numeric_field_in_my_table

Puis dans votre fichier de migration :

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

puis

run rake db:migrate

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

-1voto

jous32 Points 1

Dans votre fichier de migration, changez votre champ en :integer et exécutez run rake db:migrate

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X