Hard work by INTERNET

ベンチャーで働くひとりぼっちWEB開発者が頑張るブログ

ActiveRecord#valid?はinteger型上限バリデーションを含めるべき rails/rails#37256

ActiveRecord valid? should includes ActiveModel validation for integer type column · Issue #37256 · rails/rails · GitHub

validationを設定していないモデルのテーブルにint(11)型で定義したカラムにint(11)を超える値を設定すると、バリデーションエラーが起きないで、例外が投げられる挙動について書かかれたissue。

このissueについたコメントは、int(11)の範囲内を保証するvalidationつければいいんじゃねえの?という真っ当なコメント。 このコメントに対して、validationを設定したら他のvalidationとレイヤーが違うでしょ。だからデフォルトのvalidationに追加が必要だと思う、と返信をした。

所感

デフォルトバリデーションが具体的にどんな振る舞いをするのかはわからないので、それ次第ですが、 想定外の値が入ってくることは不具合の可能性が高いので、validationをすっ飛ばして例外を投げている現在の実装に対して不自然さは特に感じない。