2009-10-16 98 views
0

我創建了一個簡單的項目模型四個屬性:模型中的「完整」屬性是否有特殊含義?

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

然後添加一些驗證的模型:

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

現在,當我嘗試保存項目在irb,我是不允許的:

>> 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 

看來我已經遇見了al l驗證要求,是嗎?如果我改變完整屬性真正,那麼我能夠保存對象:

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

我看不出這裏發生了什麼。 完成屬性在Rails項目中有特殊含義嗎?

回答

1

它與validates_presence_of和布爾值有更多的關係,如果任何命名屬性返回空白,它會阻止保存調用?方法。

"".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 
+0

這並獲得成功,謝謝。如果我感到悲觀,我可能會看到這個bug :) – chrishunt 2009-10-16 18:32:17

+0

這不是一個bug,它是一個功能。 – EmFi 2009-10-16 18:52:24

相關問題