2011-07-30 45 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