2010-11-20 2 views
4

Я установил: precision => 8,: scale => 2 в десятичной степени миграции, но когда я вхожу 1923.423453, это все равно 1923.4. Это должно быть 1923.42 ... правильно?RAILS точность и масштаб десятичной дроби не работают

t.decimal :value , :precision => 8, :scale => 2 , :default => 0 
+0

Как этот столбец, определенную в базе данных? Соответствует ли это вашим настройкам из миграции? – Ariejan

+0

yap, миграция с консолью – wizztjh

+0

Я просто дважды проверял и сравнивал некоторые мои собственные миграции, и ваш код выглядит отлично. Не знаю, почему это не работает. Что произойдет, если вы вызове object.value.to_f, действительно ли он округляется до одного десятичного знака? Вы проверили, какое значение в базе данных напрямую, через командную строку mysql или HeidiSQL или что-то еще? –

ответ

2

По-видимому, все параметры sqlite удаляются при миграции.

Вот билет маяка нацеливания вехи 3.0.4, чтобы решить эту проблему: https://rails.lighthouseapp.com/projects/8994/tickets/2872-patch-sqlite3-adapter-drops-decimal-columns-precision-scale-when-migration-tries-to-alter-them

+0

, так что мне нужно сделать, чтобы он обновил мой адаптер rail sqlite? – wizztjh

+0

Я сам не пробовал патч, но, глядя на изменения, предназначенные для включения в этап 3.0.4, вам придется обновить файл sqlite_adapter.rb, как подробно описано в этом документе (это содержание патча в билет маяка выше): https://gist.github.com/724939 – clemensp

+0

Yepp, он был объединен с мастером с этим PR: https://github.com/rails/rails/pull/3400 и включен в Rails с версии 3.2.0 –

Смежные вопросы