Rails tips: カスタムバリデータクラスを作る(翻訳)

概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Ruby on Rails / Validations - build your own custom validator 原文公開日: 2018/01/11 著者: Paweł Dąbrowsk Rails tips: カスタムバリデータクラスを作る(翻訳) Railsに組み込まれているバリデータだけでは足りなくなると、独自のバリデーションルールを書かなければならなくなります。これをやりだすとモデルがたちまち肥大化してしまうので、これを避けるにはバリデーションロジックを別クラスに切り出すのが一番です。これによってコードがすっきりと分離され、再利用しやすくなります。 モデルのバリデーション バリデーションコードを切り離す方法をご覧いただくために、モデルのクラスをサンプルとして1つ作成し、まずはそこに単純なバリデーションルールを記述します。 class User < ActiveRecord::Base PHONE_REGEX = /some_regex/ validates :phone, format: { with: PHONE_REGEX, message: ‘invalid phone number’ } end バリデーションルールは正しくすっきりと書かれていますが、このままでは再利用できません。こんなときはバリデータクラスの作成を検討すべきです。公式ドキュメントをあさって該当部分を見つけます。 個別の属性を検証するためのカスタムバリデータを追加するには、ActiveModel::EachValidatorを使用するのが最も簡単で便利です。 カスタムバリデータの規則 カスタムバリデータを書くときの規則は次のとおりです。 バリデータを自動で読み込むときは、クラス名を名前Validator(名前の部分はバリデータ名に置き換える)としなければならない。名前の末尾をValidatorにすることで、Railsはそのクラスをバリデータと認識できるようになる。 バリデータクラスはActiveModel::EachValidatorクラスを継承しなければならない。 #validate_eachメソッドを実装しなければならない。 カスタムバリデータ 上の規則を守って、最初のカスタムバリデータを作成してみましょう。 class PhoneFormatValidator … Continue reading Rails tips: カスタムバリデータクラスを作る(翻訳)