3

假设我们有一个简单的模型,它存储两个整数,最小值和最大值。我们要给力min <= max

class MinMax
  include MongoMapper::Document

  key :min, Integer
  key :max, Integer

  validate_presence_of :min, :max
end

1) 你将如何验证 min 确实等于或小于 max?

2)如果您认为这不是模型的责任,那么应该在哪里以及由谁进行验证?

4

3 回答 3

2
validates :min_le_max

def min_le_max
  self.min <= self.max
end
于 2010-09-22T15:27:22.780 回答
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
于 2010-09-22T15:32:13.243 回答
1

类级方法是validate,不是validates...

于 2010-11-16T19:15:39.127 回答