Как создать миграцию рельсов для удаления/изменения точности и масштабирования в десятичном формате?
Я пытаюсь удалить атрибуты точности и масштаба из десятичных (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
Ответы
Ответ 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