我知道如何检查属性是否有错误:
@post.errors[:title].any?
是否可以检查哪个验证失败(例如“唯一性”)?
最近我遇到了一种情况,我需要同样的东西:用户可以从一个表单一次添加/编辑多个记录。
由于在验证时并非所有记录都已写入数据库,我无法使用@David 的解决方案。使事情变得更加复杂的是,数据库中已经存在的记录可能会成为重复的记录,这是由唯一性验证器检测到的。
TL;DR:你无法检查对于特定的验证器, 但是你可以检查特定的error.
我正在使用这个:
# The record has a duplicate value in `my_attribute`, detected by custom code.
if my_attribute_is_not_unique?
# Check if a previous uniqueness validator has already detected this:
unless @record.errors.added?(:my_attribute, :taken)
# No previous `:taken` error or at least a different text.
@record.errors.add(:my_attribute, :taken)
end
end
一些备注:
- 它确实适用于 I18n,但您必须提供相同的插值参数
added?
就像之前的验证器所做的那样。
- 如果前一个验证器编写了自定义消息而不是默认消息(
:taken
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)