Подтвердить что ты не робот

Как создать миграцию рельсов для удаления/изменения точности и масштабирования в десятичном формате?

Я пытаюсь удалить атрибуты точности и масштаба из десятичных (PostgreSQL NUMERIC) полей в моей базе данных?

Поля:

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

Что мне нужно добавить к моей миграции, чтобы изменить их на неограниченный масштаб и точность или увеличить масштаб? В настоящий момент я нажимаю ограничение по шкале и получаю такие ошибки, как:

ERROR:   numeric field overflow

Здесь контекст: "PG:: Ошибка - числовое переполнение поля" на Heroku

4b9b3361

Ответ 1

формат:

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

Сначала в терминале:

rails g migration change_numeric_field_in_my_table

Затем в файле миграции:

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

то

run rake db:migrate

Источник: http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

Ответ 2

В вашем файле миграции измените ваше поле на: integer и запустить run rake db: migrate