- 更新日: 2014年11月26日
- Rails
Railsでboolean型の属性を必須にするバリデーション
スポンサーリンク
Rails の ActiveRecord モデルの boolean 型の属性(DBカラム)のバリデーションで、presence: true と何気なく書いたらこの書き方だめでした。
— 環境 —
Rails 4.1
【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
スポンサーリンク
false の時にバリデーションエラーになってNG
例えば email_acceptance という boolean 型(true/false)の属性があったとして、validation で必須にしたい場合に以下のように書くと…
1 |
validates :email_acceptance, presence: true |
この書き方だと、email_acceptance の値が false の場合に presence: true のバリデーションに引っかかりどうやってもエラーになります。presence: true のバリデーションは、false という値を”存在しない”と判定するっぽいです。最初この書き方をしてて、テストがコケまくって超焦りました。
inclusion を使う
なので、boolean 型を必須にするバリデーションは以下のように書く。
1 |
validates :email_acceptance, inclusion: {in: [true, false]} |
inclusion を使うと email_acceptance の値が false の場合でも、バリデーションエラーにならずに済みます。
- – 参考リンク –
- 【Rails】modelでboolean型の値をvalidationしたい。【ActiveRecord】 – Qiita
- Ruby on Rails バリデーションでbooleanを必須にしたい – ayaketanのプログラミング勉強日記
スポンサーリンク
パーフェクト Ruby on Rails は、最近読んだ Rails 本の中では一番役に立った本です。Chef や Capistrano など Rails と共によく使用される技術にも触れてあります。Ruby on Rails 4 アプリケーションプログラミングは、入門的な内容で Rails の機能全体を網羅されています。
<< 前の記事 : RailsでTwitter botを作成
- 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!