как создать числовой тип данных с масштабированием и точностью при создании таблицы

#ruby-on-rails

#ruby-on-rails

Вопрос:

 create_table :offers do |t|
  t.numeric(15,2) :total_sales
  t.numeric(10,2) :price
  t.numeric(10,2) :discount
end
 

Я получаю эту ошибку

 create_offers.rb:12: syntax error, unexpected ':', expecting keyword_end
      t.numeric(15,2) :total_sales
                       ^
/home/gvpmahesh/code/present-app/present/db/migrate/20161017072207_create_offers.rb:13: syntax error, unexpected ':', expecting keyword_end
      t.numeric(10,2) :price
                       ^
/home/gvpmahesh/code/present-app/present/db/migrate/20161017072207_create_offers.rb:14: syntax error, unexpected ':', expecting keyword_end
      t.numeric(10,2) :discount
                       ^
 

Ответ №1:

Вы хотите использовать десятичный тип для хранения финансовых данных:

 create_table :offers do |t|
  t.decimal :total_sales, precision: 15, scale: 2 
  t.decimal :price,       precision: 10, scale: 2 
  t.decimal :discount,    precision: 10, scale: 2 
end
 

Ознакомьтесь с официальными руководствами по миграции.

Ответ №2:

 create_table :offers do |t|
  t.decimal :total_sales, precision: 15, scale: 2 
  t.decimal :price, precision: 10, scale: 2 
  t.decimal :discount, precision: 10, scale: 2 
end