3

最小値と最大値の2つの整数を格納する単純なモデルがあるとします。強制したいmin <= max

class MinMax
  include MongoMapper::Document

  key :min, Integer
  key :max, Integer

  validate_presence_of :min, :max
end

1)最小値が実際に最大値以下であることをどのように検証しますか?

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リクエストから適切なモデルメソッドにマッピングするためだけのものです。

validates1の場合、カスタム検証メソッドを呼び出すために使用するだけです

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 に答える