我试图向我的用户模型实例添加一个自定义错误,但是当我调用valid时?它正在清除自定义错误并返回true.
[99] pry(main)> u.email = "test@test.com"
"test@test.com"
[100] pry(main)> u.status = 1
1
[101] pry(main)> u.valid?
true
[102] pry(main)> u.errors.add(:status, "must be YES or NO")
[
[0] "must be YES or NO"
]
[103] pry(main)> u.errors
#<ActiveModel::Errors:[...]@messages={:status=>["must be YES or NO"]}>
[104] pry(main)> u.valid?
true
[105] pry(main)> u.errors
#<ActiveModel::Errors:[...]@messages={}>
如果我从模型中使用validate
方法,那么它是有效的,但是这个特定的验证是从另一个方法中添加的(需要通过参数):
User
def do_something_with(arg1, arg2)
errors.add(:field, "etc") if arg1 != arg2
end
由于上述原因,用户.有效的即使将该错误添加到实例中,也会返回true.