2011-08-19 5 views
0

나는 내 모델에서 다음과 같습니다 내 컨트롤러에서가 작동하지 유효성 검사를 해제

validates :name, :if => :should_validate_name?, 
       :presence => {:message => "Enter your name"}, 
       :length => { :maximum => 50 }, 
       :allow_blank => true 


    def should_validate_name? 
validating_name || new_record? 
end 

나는 다음과 같은 한 : 나는의 존재를 확인하지 않으

def create 
     @user = User.new(params[:user]) 
     @user.validating_name = false 
     if @user.save 
     else 
     render :action => 'new' 
     end 
end 

이 시점에서 이름을 바꿔서 끄십시오.

나는 위의 코드가 작동한다고 생각했지만 그렇지 않습니다. 나는 이유를 모른다.

답변

2

당신은 create 액션에있어 새로운 레코드를 만듭니다. 따라서 validating_name이 아니더라도 new_record?은 true입니다.

+0

유효성 검사를 해제 할 수있는 방법이 있습니까? – chell

+0

예,': if' 메소드가'false'를 리턴하도록합니다. 어떤 상황에서 유효성 검사를 건너 뛰고 싶습니까? – Chowlett

+0

우리는 이메일이 아닌 이름 만 캡처 할 수있는 양식을 가지고 있습니다. 어떤 상황에서는 사용자가 이름없이 등록하게하고 경우에 따라 이름을 요구합니다. 당신은 답을 찾았고 정말로이 문제를 해결했습니다. 대답 할 시간을내어 주셔서 감사합니다. – chell

관련 문제