#概要
アソシエーションを組んだモデルを一度に登録する際に、不要なバリデーションを組んでいたために、エラーメッセージが二重に表示された。
#結論
rails5からは、belongs_to: で外部キーに設定している場合は自動でnilは許可しないバリデーションが設定されるので、バリデーションの記述は不要。
#詳細
商品出品機能を実装していた際に、バリデーションによって登録ができなかった時にエラーメッセージを表示するよう実装を行っていました。
itemモデル(商品)にimageモデルとcategoryモデルをassociationを組んで、同時に登録を行えるようにしていました。
- gem rails-i18nをinstall
- エラーメッセージを日本語翻訳
カテゴリーのエラーメッセージが2つある。。。
原因は最終行の__validate :category_id__でした。
__belongs_to:__で外部キーとして設定しているモデルに対してはバリデーションは不要とのこと。
後々自分で調べてみると、rails5からは外部キーに設定すると自動でnilは許可しないバリデーションが設定されるとのこと。
(参照:https://pikawaka.com/rails/validation)
今まで考えたこともなかったけど、当たり前、、、?なのか??
頭がこんがらがってきた、、、。
今まで複数のモデルを一度に登録させることがなかったため、今回初めてこのような問題に直面したと思います。