Rails database defaults and model validation for boolean fields
activerecord, ruby-on-rails, ruby-on-rails-3.2
Solution
From here
If you want to validate the presence of a boolean field (where the real values are true and false), you will want to use validates_inclusion_of :field_name, :in => [true, false] This is due to the way Object#blank? handles boolean values. false.blank? # => true
Or in Rails3 way
validates :field, :inclusion => {:in => [true, false]}
Problem
In a Rails model I have an attribute `is_subscriber`, when I constructed a db migration to add this column to the database I specified the default value to be false: ``` t.boolean "is_subscriber", :default => false ``` I also specified in the model that this attribute needs to be present: ``` validates :is_subscriber, presence: true ``` So why do I get this error when I create a model instance without specifying this attribute? ``` 2012-05-08T21:05:54+00:00 app[web.1]: ActiveRecord::RecordInvalid (Validation failed: Is subscriber can't be blank): ```