2.9 numericality
このヘルパーは、属性に数値のみが使われていることを検証
します。デフォルトでは、整数値または浮動小数点数値にマッチ
します。これらの冒頭に符号がある場合もマッチ
します。
:only_integer
をtrueに設定すると、属性の値に対するバリデーションで以下の正規表現が使われます。
/\A[+-]?\d+\z/
それ以外の場合は、Floatを用いる数値の変換を試みます。Floatは、カラムの精度または15を用いてBigDecimalにキャストされます。
class Player < ApplicationRecord
validates :points, numericality: true
validates :games_played, numericality: { only_integer: true }
end
:only_integerのデフォルトのエラーメッセージは「must be an integer」です。
このヘルパーでは、:only_integer以外にも以下のオプションで値の制約を指定できます。
:greater_than
: 指定の値よりも大きくなければならないことを指定します。デフォルトのエラーメッセージは「must be greater than %{count}」です。
:greater_than_or_equal_to
: 指定の値と等しいか、それよりも大きくなければならないことを指定します。デフォルトのエラーメッセージは「must be greater than or equal to %{count}」です。
:equal_to
: 指定の値と等しくなければならないことを示します。デフォルトのエラーメッセージは「must be equal to %{count}」です。
:less_than
: 指定の値よりも小さくなければならないことを指定します。デフォルトのエラーメッセージは「must be less than %{count}」です。
:less_than_or_equal_to
: 指定の値と等しいか、それよりも小さくなければならないことを指定します。デフォルトのエラーメッセージは「must be less than or equal to %{count}」です。
:other_than
: 指定の値以外の値でなければならないことを指定します。デフォルトのエラーメッセージは「must be other than %{count}」です。
:in
:渡された範囲に値が含まれていなければならないことを指定します。デフォルトのエラーメッセージは「must be in %{count}」です。
:odd
: trueの場合は奇数でなければなりません。デフォルトのエラーメッセージは「must be odd」です。
:even
: trueの場合は偶数でなければなりません。デフォルトのエラーメッセージは「must be even」です。
デフォルトでは、numericalityのnil値は許容されません。
allow_nil: trueオプションでnil値を許可できます。
デフォルトのエラーメッセージは「is not a number
」です。
出典
感想
数字だけのバリデーションがあるのか。
他にも色々なヘルパーが使えるらしい。
これらの存在があることだけでも覚えておこう。
先で使えるかも知れない。