2011-06-10 4 views
0

다음과 같은 사용자 모델이 있습니다.레일즈 - 조건부로 유효성 검사를 사용하려면 어떻게해야하나요?

class User < TwitterAuth::GenericUser 

acts_as_authentic {|c| 
    c.login_field = :email 
    c.validate_email_field = false 
    c.validate_password_field = false 
    } 
end 

TwitterAuth 및 Authlogic 플러그인을 사용합니다.

사용자가 트위터를 사용하여 일반 전자 메일을 통해 등록했는지 여부에 따라 유효성 검사를 선택적으로 사용하지 않으려합니다. c.validate_email_field = false .

- With email and password registration, the validations needs to be on. 
-twitter does not have email or password fields, the validation needs to be off. 

When I disable validation, the authLogic user registration using email and password fails: 

unknown attribute: password_confirmation 


I tried to selectively disable validation if attribute 'twitter_id' is present. 

c.merge_validates_confirmation_of_password_field_options({:unless => :skip_password_validation?}) 

def skip_password_validation 
    !attribute_present?('twitter_id') 
end 

'twitter_id'특성이 사용자 테이블에 있는지 여부는 사용 여부에 관계없이 작동하지 않습니다.

전자 메일 및 암호 유효성 검사를 선택적으로 활성화하려면 어떻게합니까? i, e 트위터 oAuth를 사용하지 않는 경우에만 유효성 검사를 사용합니다.

도움 주셔서 감사합니다

답변

1

에 대한

덕분에 나는 당신이 아마 더 복잡한 검증 논리에 대한 의미 것 validates_with처럼, 다른 검증 방법 볼 필요가 있다고 생각. . 그런 다음 ValidationSkipper에게 탄주는 시도

+0

validates_with와 (과) 같이 보이는 것은 Rails 3.0뿐입니다. 나는 불행하게도 2.3.5에 있는데 그것은 옵션처럼 보이지 않는다. – truthSeekr

+1

네 말이 맞아. 2.3.x에서는'validate' 메서드를 직접 재정의해야한다고 가정합니다. 'ActiveRecord :: Validations'에 대한 예제를보십시오. 행운을 빕니다! – harald

0

당신이 전달 된 내용에 따라 필요로하는 특성을 검증 할 수 있어야한다 :

https://github.com/npearson72/validation_skipper

그냥 사용자 모델에 검증 및 조건을 설정을하고, 건너 뛰기 당신이 트위터에 전화를 할 때 그들.

관련 문제