Skip to main content

5.バリデーター

Validator とはデーターベースに値を保存する際に、値の形式が合っているかをチェックする機構のことである。 validator は型と似ているが、型よりも厳しくチェックしたい場合に利用する。 例えば、数字でも 0~5 の値のみ許可するフィールドを作る場合に、validator を利用する。

多くの場合こういった値の形式チェックはコード内の if 文で直に行われることが多いが、 Rails ではその役割を切り離し MVC と同じように Validator にやらせる。

Validator は作るサービに依存して作られることが多いが、試しに英数字のみを許可するものを作成する。 appフォルダにvalidatorsフォルダを作成する。

mkdir app/validators

次に作成したフォルダにパスを通す。config/application.rbを開いて、class Application < Rails::Application内に下のコードを加える。

# add custom validators path
config.autoload_paths += Dir["#{config.root}/app/validators"]

alphanum validator

アルファベットと数字のみを許可する validator を作成する。

touch app/validators/alphanum_validator.rb

中身をこのようにする。

class AlphanumValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
unless value =~ /\A[A-Za-z0-9]+\z/i
record.errors.add(attribute)
end
end
end

これでいつでもアルファベットと数字のみを許可する validator が完成した。 具体的に利用する場面は Devise やコンテンツ作成場面などもう少し先になる。

git add .
git commit -m "Set up validatiors and create a alphanum validator"