Как определить ActiveModel ::Тип проверки ошибок

. При переходе с Rails 2 на Rails 3 ошибки проверки были перемещены из ActiveRecord ::Error в ActiveModel ::Errors.
В rails 2 ошибка проверки имела тип и сообщение (среди прочего ), и вы могли проверить тип ошибки проверки, выполнив что-то вроде следующего:

rescue ActiveRecord::RecordInvalid => e
  e.record.errors.each do |attr, error|
    if error.type == :foo
      do_something
    end
  end
end

Но с Rails 3 кажется, что все, кроме недопустимого атрибута и сообщения, было потеряно. В результате единственный способ определить тип — сравнить сообщение об ошибке:

rescue ActiveRecord::RecordInvalid => e
  e.record.errors.each do |attr, error|
    if error == "foobar"
      do_something
    end
  end
end

Что совсем не идеально (, например. что, если у вас есть несколько проверок, которые используют одно и то же сообщение? ).

Вопрос:
Есть ли лучший способ в rails 3.0 определить тип ошибки проверки?

5
задан pricey 30 October 2012 в 08:19
поделиться