1

このオブジェクトに入る数値が3で割り切れることを確認したいのですが、無効な入力を防ぐためにモデルで検証を使用するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

3

これを試して:

# your_model.rb
validate :only_valid_numbers

private

    def only_valid_numbers
        if (self.number % 3) != 0
            self.errors[:base] << "Number must be divisible by 3!"
        end
    end

これは 0 になることに注意してください0 % 3。それを許可したくない場合は、if ステートメントを次のように変更します。

if self.number != 0 and ...etc...
于 2012-07-06T16:57:26.927 に答える
0

次のように、独自の単純な検証メソッドを作成できます。

validate :divisible_by_three

def divisible_by_three
  unless attribute%3 == 0
    self.errors.add(:attribute, "is not divisible by 3")
  end
end

Railsメソッドに組み込まれているとは思わないので、これがおそらく最良の解決策です。

トム

于 2012-07-06T17:01:29.443 に答える