Model中的“complete”属性有特殊含义吗?

时间:2009-10-16 18:09:43

标签: ruby-on-rails ruby

我创建了一个简单的 Project 模型,它有四个属性:

Project name:string description:text complete:boolean user_id:integer

然后为模型添加了一些验证:

class Project < ActiveRecord::Base
  validates_presence_of :name, :description, :complete
end

现在,当我尝试在irb中保存 Project 时,我不被允许:

>> r = Project.new(:name => 'Name', :description => 'Description', :complete => false)
=> #<Project id: nil, name: "Name", description: "Description", created_at: nil, updated_at: nil, complete: false, user_id: nil>
>> r.save
=> false

好像我已经满足了所有验证要求,是吗?如果我将完整属性更改为 true ,那么我可以保存该对象:

>> r.complete = true
=> true
>> r.save
=> true

我看不出这里发生了什么。 完整属性在Rails项目中是否具有特殊含义?

1 个答案:

答案 0 :(得分:1)

它更多地与validates_presence_of和布尔值有关,如果任何命名属性对空白返回true,它会阻止保存调用?方法。

"".blank? => true
[].blank? => true
false.blank? => true
nil.blank? => true

您必须使用其他验证来检查完整性,例如:

class Project < ActiveRecord::Base
  validates_presence_of :name, :description
  validates_inclusion_of :complete, :in => [true, false]
end