【Rails】バリデーションのメッセージで重複を取り除く

TECH
2016.02.04
Pocket

【Rails】バリデーションのメッセージで重複を取り除く

Railsのバリデーションは優秀で自動的にエラーメッセージを表示してくれます。
例えば入力が必須の項目(nameとします)に何も入っていなかった時はこんな感じです。

*Name can't be blank
*Name is invalid

しかしinvalidだってことは自明なので取り除きたい。
そんな時はModel(Userモデルとします)においてバリデーションが終わった後に取り除いてしまえばいいんです。

#user.rb

after_validation :remove_unnecessary_error_messages

とするとバリデーションが終わった後に「remove_unnecessary_error_messages」を実行してくれます。

そして不必要なメッセージを削除してあげます。

#user.rb

def remove_unnecessary_error_messages
  errors.messages.delete(:users)
end

どのメッセージを削除するかは「errors.messages」の中身を見て判断してください。

Pocket