2011-07-30 44 views
1

對mongoid和主動記錄驗證有一定的瞭解。Mongoid驗證問題。

我的模型:

class Project 
     include Mongoid::Document 

     field :name 
     field :public, :type=>Boolean 

     #validation 
     validates_acceptance_of :public 
    end 

,在我控制我打電話:

Project.create!(:name => 'Test Project', :public => false) 

但我不斷收到一個錯誤,指出:公衆必須接受。

任何想法,爲什麼我得到這個錯誤,雖然我在公共領域創建一個布爾值的條目?

回答

3

fine manual

封裝想要驗證接受服務複選框(或類似協議)的一個方面的的圖案。

的想法是,他們必須檢查:public複選框,並應導致真正的價值;但是false是一個非真值,驗證失敗,驗證器會告訴你「公共必須被接受」。

也許你正在尋找:

Project.create!(:name => 'Test Project', :public => true) 

的文件也說:只有當terms_of_servicenil進行

此檢查...

terms_of_service引用他們的例子。所以你也可以這樣做:

Project.create!(:name => 'Test Project', :public => nil) 
Project.create!(:name => 'Test Project') 

如果你想在MongoDB中得到一個條目,看起來像有人滑過你的驗證。

+0

這很有道理,我一直以接受值類型的心態閱讀它,而不是與表單元素的關係。儘管在嘗試Project.create!(:name =>'Test Project',:public => true)時,我得到了同樣的錯誤。真的只是尋找一種方法來驗證字段類型。 – griffithben