2012-01-03 3 views
6

Используя рельсы 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 не содержит информации о масштабе/точности.

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

ответ

1

У меня была такая же проблема, пожалуйста, смотрите на что Лив: 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 
1

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

change_column :products, :price, :decimal, :precision => 10, :scale => 2