У меня возникла проблема с ошибками проверки при сохранении модели с помощью save!. Ошибочные сообщения об ошибках модели ActiveRecord пустые, поэтому я не знаю, какие ошибки происходят при попытке проверки. Когда я пытаюсь error.full_messages или errors.each_full в соответствии с документацией, он должен отображать ошибки, которых у них нет.
Модель, которую я пытаюсь сохранить, - это модель ордеров (сайт электронной торговли с использованием 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 и общая сумма сохраняются в базе данных 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 и total действительным для сохранения как десятичного (8,2)?
Я использую рельсы 2.3.5 и веселье 0.10.2