Как использовать десятичную с точностью и масштабом? - PullRequest
6 голосов
/ 03 января 2012

Используя rails 3.0.3, я перенес столбец decimal в свою базу, используя следующую миграцию:

 change_table :products do |t|
   t.change :price, :decimal, :precision => 10, :scale => 2
   # other code
 end

Миграция работает нормально, но я все еще могу хранить значение как 4.64564, где оно должно хранить только 4.65

Кроме того, кроме созданного мной файла миграции, schema.rb не содержит информации о масштабе / точности.

Почему рельсы принимают точность / масштабную миграцию, чтобы игнорировать ее?

Ответы [ 2 ]

2 голосов
/ 11 января 2014

Вы должны попробовать с

change_column :products, :price, :decimal, :precision => 10, :scale => 2
1 голос
/ 08 февраля 2012

У меня была такая же проблема, пожалуйста, посмотрите на эту библиотеку: https://github.com/dmgr/dmg_decimal

С ней вы можете использовать ее в такой модели:

def price= val
  self[:price] = Dmg::Decimal.real(val, scale: 2, precision: 10).to_d if val.present?
end
...