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"