pri*_*cey 5 validation ruby-on-rails-3
随着从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
Run Code Online (Sandbox Code Playgroud)
但是使用Rails 3似乎所有东西,但无效的属性和消息已经丢失.因此,确定类型的唯一方法是比较错误消息:
rescue ActiveRecord::RecordInvalid => e
e.record.errors.each do |attr, error|
if error == "foobar"
do_something
end
end
end
Run Code Online (Sandbox Code Playgroud)
这根本不是理想的(例如,如果您有多个使用相同消息的验证怎么办?).
问题:
在rails 3.0中有更好的方法来确定验证错误的类型吗?
检查是否添加?关于 ActiveModel:: 错误:
https://github.com/rails/rails/blob/master/activemodel/lib/active_model/errors.rb#L331
这允许你这样做:
record.errors.added?(:field, :error)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1581 次 |
| 最近记录: |