- 更新日: 2015年8月31日
- Rails
Railsのvalidates :numericalityのバリデーションでnilを許可
スポンサーリンク
フィールドの入力値が数値であることを保証するために、Rails の ActiveRecord ビルトインのバリデーションである validates :numericality を使おうとしたところ、どうやら普通に使うと presence: true のバリデーションを暗黙的に含むようで、nil や blank? が true となるような値が弾かれました。ということで、nil や blank? が true な値を許可しつつ、入力値は数値となる書き方を調べた。
【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
スポンサーリンク
— 環境 —
Rails 4.1.6
普通に numericality: true だと nil を受け付けない
以下のようにモデルに普通に書きますと、自動的に presence: true のバリデーションも有効になるようで、空欄にしたフォームのフィールド(値が nil)を受け付けません。
1 |
validates :total, :numericality => true |
:allow_blank オプションを true にする
:allow_blank オプションを true にして、validates :numericality を使ったところ、意図したとおりに nil または blank な値を許可しつつ、入力値は数値となるバリデーションを有効にできました。以下のいずれかのように書く。
1 2 |
validates :total, :numericality => { :allow_blank => true } validates :total, :numericality => true, :allow_blank => true |
以上です。
- – 参考リンク –
- ruby – Rails validation required numericality even though presence is not set to true – Stack Overflow
- ActiveRecordのvalidates :numericalityはnilを受け付けないらしい – 杉風呂2.0 – A Lifelog –
- ActiveRecord validates :numericalityでnilを許可する
スポンサーリンク
パーフェクト Ruby on Rails は、最近読んだ Rails 本の中では一番役に立った本です。Chef や Capistrano など Rails と共によく使用される技術にも触れてあります。Ruby on Rails 4 アプリケーションプログラミングは、入門的な内容で Rails の機能全体を網羅されています。
<< 前の記事 : View Helperの動作をrails consoleのpryで確認
- Rails の関連記事
- RailsでMySQLパーティショニングのマイグレーション
- Rails ActiveRecordでdatetime型カラムのGROUP BY集計にタイムゾーンを考慮する
- RailsプラグインGemの作成方法、RSpecテストまで含めたrails pluginの作り方
- RailsでAMPに対応するgemをリリースしました
- Railsでrequest.urlとrequest.original_urlの違い
- Railsでwheneverによるcronバッチ処理
- Google AnalyticsのRails Turbolinks対応
- Railsアプリにソーシャル・シェアボタンを簡単設置
- Rails監視ツール用にErrbitをHerokuで運用
- Facebook APIバージョンのアップグレード手順(Rails OmniAuth)
Leave Your Message!