在掌握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)
但我不断收到错误消息:公众必须被接受。
虽然我在公共字段中创建了一个带有布尔值的条目,但是有关为什么我会收到此错误的想法?
答案 0 :(得分:3)
来自fine manual:
封装想要验证接受服务条款复选框(或类似协议)的模式。
我们的想法是他们必须检查:public
复选框,这应该会产生真正的价值;但是false
是非真值,验证将失败,验证者会告诉您“公众必须被接受”。
也许你正在寻找:
Project.create!(:name => 'Test Project', :public => true)
文档还说:
仅当
时才会执行此检查terms_of_service
不是nil
...
而terms_of_service
指的是他们的榜样。所以你也可以这样做:
Project.create!(:name => 'Test Project', :public => nil)
Project.create!(:name => 'Test Project')
如果您想在MongoDB中获得一个看起来像某人已经超过您的验证的条目。