Mongoid验证问题。

时间:2011-07-30 06:12:42

标签: ruby-on-rails 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)

但我不断收到错误消息:公众必须被接受。

虽然我在公共字段中创建了一个带有布尔值的条目,但是有关为什么我会收到此错误的想法?

1 个答案:

答案 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中获得一个看起来像某人已经超过您的验证的条目。