假设我们有一个简单的模型存储两个整数,分钟和最大值。我们想强制min <= max
。
class MinMax
include MongoMapper::Document
key :min, Integer
key :max, Integer
validate_presence_of :min, :max
end
1)你如何确认min确实等于或小于max?
2)如果您认为这不是模型的责任,那么应该在哪里和谁进行验证?
答案 0 :(得分:2)
validates :min_le_max
def min_le_max
self.min <= self.max
end
答案 1 :(得分:2)
我会反过来回答你的问题。对于问题2,这样的验证绝对是模型的责任。几乎任何你的程序的核心逻辑属于你的模型;控制器仅用于从HTTP请求映射到适当的模型方法。
对于1,只需使用validates
来调用自定义验证方法
validates :valid_range
def valid_range
min <= max
end
如果您需要自定义错误消息,请在验证中明确添加错误消息:
validate :valid_range
def valid_range
errors.add_to_base("Not a valid range") unless min <= max
end
答案 2 :(得分:1)
班级方法是validate
,而不是validates
...