【rails初学者向け】バリデーションを自作する方法を解説します

今回はrailsでバリデーションを自作していきます。

railsにはたくさんのバリデーションが用意されていますが、開発が複雑になればなるほど、自分でバリデーションを自作したくなるものです。

簡単で大丈夫なので、方法だけ覚えておきましょう。

versions
  • ruby 2.6.5
  • rails 6.0.0

準備をしよう

まずは、scaffoldを使用して準備していきましょう。

~$ rails new validation
~$ cd validation
validation$ rails db:migrate
validation$ rails g scaffold val name:string
validation$ rails db:migrate

scaffoldって本当に便利ですよね!

バリデーションを自作していこう

今回は、valというモデルを作成したので、models/val.rbに記述していきます。

class Val < ApplicationRecord

  validate :include_hoge?

  def include_hoge?
    if /^(?=.*hoge).*$/.match(name)
      errors.add(:name, "hogeが入っていたら登録できません")
    end
  end

end

注意が必要なのは、

validate

ここです。

validatesではなくて、validateですね。

今回は名前に「hoge」が入っていたら、登録できないというバリデーションを正規表現を使用して実現しています。

まとめ

  • バリデーションは自作できる
  • validatesメソッドではなくて、validateメソッドを使用する

僕も馴れるまでは使用方法に苦労しましたが、覚えておくと、とても便利です。

みなさんも開発に活かしてくださいね。