FBCのdeviseプラクティスで郵便番号に整数のみ、桁数指定でバリデーションを追加したかったので方法を調べました。
結論
バリデーションで以下を指定することで整数のみ、桁数指定を追加できます。
- 整数のみ:
numericality: { only_integer: true }
- 桁数指定:
length: { is: 桁数 }
Active Record バリデーション - Railsガイド
Active Record バリデーション - Railsガイド
実装例
Userモデルのzipcode
カラムに整数7桁のバリデーションを追加します。
app/models/user.rb
にバリデーションを追記します。
# app/models/user.rb # frozen_string_literal: true class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable # 下記を追加 validates :zipcode, length: { is: 7 }, numericality: { only_integer: true } end
これで整数7桁限定でバリデーションが掛かるようになります。
まとめ
バリデーションについてすっかり忘れていたので良い復習になりました。 ActiveRecordについての理解が全然なので少しづつ理解を深めていきたいと思います。