У меня проблема с ошибками проверки при сохранении модели с помощью save !.Сообщения об ошибках модели ошибок ActiveRecord пустые, поэтому я не знаю, какие ошибки происходят при попытке проверки.Когда я пытаюсь использовать error.full_messages или errors.each_full в соответствии с документацией , он должен отображать ошибки, которых нет.
Модель, которую я пытаюсь сохранить, - это модель Orders.(сайт электронной коммерции, использующий Spree).Когда элемент в заказе будет удален, update_totals!вызывается, который пересчитывает итоги, а затем сохранить!вызывается, что вызывает ошибку проверки ( эта ошибка происходит очень редко, но только когда я вошел в систему , и я не смог найти причину этого).Модель заказа имеет две проверки в своей модели:
validates_numericality_of :item_total
validates_numericality_of :total
я записал order.item_total.inspect, order.total.inspect и order.errors.full_messages.inspect и получил это:
Wed Jan 25 08:53:08 -0800 2012order item total: #<BigDecimal:15780c60,'0.279E2',8(16)>
Wed Jan 25 08:53:08 -0800 2012order total: #<BigDecimal:152bf410,'0.2448225E2',12(20)>
Wed Jan 25 08:53:08 -0800 2012: ERRORS SAVING ORDER:
Wed Jan 25 08:53:08 -0800 2012[]
item_total и total хранятся в базе данных mySQL как десятичные (8,2).Последняя строка - это order.errors.full_messages.inspect, который является пустым массивом.Ошибка проверки выглядит следующим образом:
ActiveRecord::RecordInvalid (Validation failed: {{errors}}):
vendor/extensions/mgx_core/app/models/order.rb:382:in `update_totals!'
vendor/extensions/mgx_core/app/controllers/line_items_controller.rb:7:in `destroy'
app/middleware/flash_session_cookie_middleware.rb:19:in `call'
C:\Users\mgx\My Documents\Aptana Studio 3 Workspace\catalogue-spree\script\server:3
c:/Ruby187/lib/ruby/gems/1.8/gems/ruby-debug-ide-0.4.16/lib/ruby-debug-ide.rb:112:in `debug_load'
c:/Ruby187/lib/ruby/gems/1.8/gems/ruby-debug-ide-0.4.16/lib/ruby-debug-ide.rb:112:in `debug_program'
c:/Ruby187/lib/ruby/gems/1.8/gems/ruby-debug-ide-0.4.16/bin/rdebug-ide:87
c:/Ruby187/bin/rdebug-ide:19:in `load'
c:/Ruby187/bin/rdebug-ide:19
Я полагаю, мой вопрос двоякий:
1.Почему моя модель ошибок activerecord не говорит, что такое ошибка проверки?
2.Как мне решить эту проблему?Является ли мой item_total и итог действительным для сохранения в виде десятичной дроби (8,2)?
Я использую рельсы 2.3.5 и веселье 0.10.2