2011-03-17 11 views
0

두 개의 비활성화 된 텍스트 상자가 있습니다. 그리고 그것은 가치로서 제로를 전달합니다.왜 update_attribute가 유효성 검사를 실행합니까?

여전히 update_attribute가 해당 텍스트 상자에 대한 유효성 검사를 실행 중입니다.

내 지식에 따라 update_attribute는 전달 된 값이 0 인 spefic 열을 업데이트하지 않아야합니다.

validates_inclusion_of :text_response_time, :in => 0..60, :message => " should be between 0 to 60 minutes." 

(rdb:589) params[:test][:text_response_time] 
nil 
(rdb:589) @test.update_attributes!(params[:test]) 
ActiveRecord::RecordInvalid Exception: Validation failed: Text response time should be between 0 to 60 minutes. 

모든 아이디어!

답변

1

업데이트 속성은 항상 전체 개체의 유효성을 검사하므로 실패한 유효성 검사를 계속 받게됩니다.

@test.update_attribute(:test, params[:test][:text_response_time]) 

가 검증없이 저장됩니다 중 하나를 단순히 update_attribute 사용 (검증을 무시하는) 또는 더 설명하기 위해이 railscast

0

에 설명 된대로 조건 확인을 사용하는 옵션은 다음이 될 것입니다.

validates_inclusion_of :text_response_time, :in => 0..60, 
    :message => "should be between 0 to 60 minutes.", :on => :create 
: 상황에서 작동 할 수

또 다른 전략은 창조를 검증하기 위해 (그리고 업데이트)입니다

관련 문제