Twitter/FB 용 Omniauth 로그인을 설정하려고합니다. 나는 사용자 생성시 암호와 전자 메일의 유효성을 검사하는 자체 인증 시스템을 만들었습니다. 그러나 사용자가 Twitter/Fb를 통해 로그인 할 때 비밀번호 나 이메일을 확인하고 싶지 않습니다.개체가 특정 메서드에서 생성 된 경우 유효성 검사 건너 뛰기
나는 omniauth_login이라는 사용자 속성을 만들었습니다. 나는 should_validate_password에 유효성 검사가 필요한지 아닌지를 테스트하기 위해 부울 값으로 사용하고 있습니까? 방법. 내가 통해 로그인하여 새 사용자를 만들려고 할 때
sessions_controller.rb
def omniauth_create
auth = request.env["omniauth.auth"]
user = User.new
user.omniauth_login = 'true'
user = User.find_by_provider_and_uid(auth["provider"], auth["uid"]) ||
User.create_with_omniauth(auth)
session[:user_id] = user.id
redirect_to user
end
:
User.rb 여기
attr_accessor :password, :updating_password, :omniauth_login
validates_presence_of :password, :if => :should_validate_password?
validates_confirmation_of :password, :if => :should_validate_password?
def should_validate_password?
(updating_password || new_record?) && !(self.omniauth_login == 'true')
end
def self.create_with_omniauth(auth)
create! do |user|
user.provider = auth["provider"]
user.uid = auth["uid"]
user.name = auth["info"]["name"]
end
end
사용자를 만드는 데 사용 내 컨트롤러 트위터, 난 아직 유효성 검사 오류가 나타납니다 :
create_with_omniauth 메소드에서 객체를 만들면 암호 및 전자 메일 유효성 검사를 건너 뛰려면 어떻게해야합니까?
감사합니다.