ric*_*ard 10 validation ruby-on-rails
我有一个类似于以下的模型,
class Activity < ActiveRecord::Base
attr_accessible :name, :admin
validates :name, :presence => true
validates :admin, :presence => true
end
Run Code Online (Sandbox Code Playgroud)
name属性是一个字符串,admin属性在迁移中定义为boolean.
如果我尝试在控制台中使用创建模型的实例,
a = Activity.create(:name => 'Test', :admin => 0)
Run Code Online (Sandbox Code Playgroud)
然后验证失败,说我需要为Admin提供一个值.为什么?我提供了一个值.
我能理解,如果我没有提供任何价值,或者我提供了零.但为什么像0这样的值(或者甚至是假的)会导致验证失败?
zet*_*tic 19
validates :presence用于blank?确定是否存在值.但是false.blank?=>是的.因此验证失败,因为blank?告诉ActiveRecord没有值存在.
您可以将其重写为:
validates :field_name, :inclusion => { :in => [true, false] }
另请参阅Ruby on Rails中nil v.vull v.blank的简明解释
| 归档时间: |
|
| 查看次数: |
3214 次 |
| 最近记录: |