如果您需要对相当复杂的验证进行编码,则错误有时不会出现在特定属性中,而是存在于其中几个属性的组合中.
例如,如果我想验证:start_date和:end_date之间的时间段不包含任何星期日,则错误不属于这些字段中的任何一个,但错误添加方法需要指定它.
MrD*_*anA 30
尝试做这样的事情:
# Your Model.rb
validate :my_own_validation_method
...
private
def my_own_validation_method
if there_is_no_sunday_in_the_range
self.errors[:base] << "You must have a Sunday in the time range!"
end
end
Run Code Online (Sandbox Code Playgroud)
基本上,您可以将自己的复杂验证添加到模型中,当您发现错误发生时,可以在错误数组中添加错误字符串.
上面的答案已经过时了。对于 Rails 5 及更高版本,您需要使用第一个参数调用ActiveModel::Errors 添加方法:base。请参阅下面的示例。
model_instance.errors.add(
:base,
:name_or_email_blank,
message: "either name or email must be present"
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17215 次 |
| 最近记录: |