假设我们有一个简单的模型,它存储两个整数,最小值和最大值。我们要给力min <= max
。
class MinMax
include MongoMapper::Document
key :min, Integer
key :max, Integer
validate_presence_of :min, :max
end
1) 你将如何验证 min 确实等于或小于 max?
2)如果您认为这不是模型的责任,那么应该在哪里以及由谁进行验证?
假设我们有一个简单的模型,它存储两个整数,最小值和最大值。我们要给力min <= max
。
class MinMax
include MongoMapper::Document
key :min, Integer
key :max, Integer
validate_presence_of :min, :max
end
1) 你将如何验证 min 确实等于或小于 max?
2)如果您认为这不是模型的责任,那么应该在哪里以及由谁进行验证?
validates :min_le_max
def min_le_max
self.min <= self.max
end
我会反过来回答你的问题。对于问题 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
类级方法是validate
,不是validates
...