RoRでDBテーブルのカラムと一致しない項目がある入力フォームを実現する その4
記しておかなくてもよいとおもったが、バリデーションは次のように書けることは記しておこう:
class AddressBook < ApplicationRecord validates :address, presence: true, length: { maximum: 10, message: "区切り記号の半角空白も含めて10文字以内にしてください。" } def add_form_attributes self.singleton_class.class_eval{ attr_accessor :state, :city, :street validates :state, presence: true validates :city, presence: true validates :street, presence: true, length: { maximum: 3 } } end # 省略 end
上記は町名字番地等を入力してもらうstreetを3文字まで、そして全体を半角空白で繋げた文字数を10文字まで入力可能としている。入力する文字の長さを変えて、幾つかのエラーパターンを発生させられるが、きちんと処理した順序でエラーがスタックされていることが確認できるだろう。