【发布时间】:2012-08-09 10:04:16
【问题描述】:
随着从 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 中是否有更好的方法来确定验证错误的类型?
【问题讨论】:
标签: ruby-on-rails-3 validation