Rails数据库默认值和布尔字段的模型验证

And*_*nov 26 activerecord ruby-on-rails ruby-on-rails-3.2

在Rails模型中,我有一个属性is_subscriber,当我构建一个db迁移以将此列添加到数据库时,我将默认值指定为false:

t.boolean  "is_subscriber",   :default => false
Run Code Online (Sandbox Code Playgroud)

我还在模型中指定需要存在此属性:

validates :is_subscriber, presence: true
Run Code Online (Sandbox Code Playgroud)

那么为什么在创建模型实例时却没有指定此属性会出现此错误?

2012-05-08T21:05:54+00:00 app[web.1]: ActiveRecord::RecordInvalid (Validation failed: Is subscriber can't be blank):
Run Code Online (Sandbox Code Playgroud)

Fab*_*bio 51

这里开始

如果要验证是否存在布尔字段(实际值为true和false),则需要使用validates_inclusion_of:field_name,:in => [true,false]这是由于Object#blank的方式?处理布尔值.false.blank?#=>是的

或者以Rails3的方式

validates :field, :inclusion => {:in => [true, false]}
Run Code Online (Sandbox Code Playgroud)