2011-07-30 5 views
1

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) 

는하지만라는 오류가 계속 : 공공 허용해야합니다.

공개 입력란에 부울과 함께 항목을 만들지 만 왜이 오류가 발생하는지에 대한 의견이 있으십니까? fine manual에서

답변

3

:

서비스 확인란 (또는 이와 유사한 계약)의 용어의 수용을 검증하고자하는 패턴을 캡슐화합니다.

아이디어는 :public 체크 박스를 확인해야하며 그 결과 값이 참값이됩니다. 그러나 false이 아닌 값이면 유효성 검사에 실패하고 유효성 검사기는 "공용을 수락해야합니다"라고 알려줍니다. ... terms_of_servicenil없는 경우

이 검사는 수행

그리고를 :

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

문서는 말한다 :

은 아마 당신이 찾고있는 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

관련 문제