更好的方法来访问单个Rails ActiveRecord错误?

我正在尝试访问ActiveRecord :: Error对象的type属性。 我这样做的原因是因为我想根据失败的validation类型将用户重定向到不同的页面(属性可能在几个方面失败validation,因此属性本身不足)。

我发现我能做到这一点的唯一方法是:

obj.errors.instance_variable_get(:@errors)["attr"][0].type

这简直太讨厌了。 有没有更好的办法?

看起来你最好的办法是扩展ActiveRecord::Errors

 class ActiveRecord::Errors def error_type(attr) @errors[attr] && @errors[attr].first.type end end