2012-07-05 1 views
2

Michael Hartl이 RoR 튜토리얼을 통해 사용자 모델링, 로그인 및 가입을 수행했습니다. 이제 로그인 할 때 주어진 전자 메일이 실제 전자 메일이고 유효성 검사에서 정규식과 일치하는 임의의 문자열이 아닌지 확인해야하는 위치에 있습니다.이메일 주소 확인

저는 Devise가 그 점을 알고 있습니다. 그리고 나는 가지고있는 작업 코드를 변경하고 싶지 않습니다. Devise가 보유하고있는 이메일 확인 기능 만 사용하려면 어떻게해야합니까? (나를 위해 로그인, 세션 및 인증 등을하지 않기를 바랍니다.)

Devise를 이런 식으로 사용할 수 없다면 Devise를 내 Rails 사용자 모델에 연결하는 것이 얼마나 치열합니까?

감사합니다.

+0

이메일 주소 필드의 유효성을 검사하면됩니다. 그것을 위해 보석이 필요하지 않습니다! – c0deNinja

+0

무엇을 의미합니까? 이메일이 존재하는지 확인/확인해야합니다. [email protected]을 주면 정규식에 유효한 이메일 주소처럼 보일 것입니다. 어떤 아이디어? – Myna

+0

당신이하려고하는 일을하는 것이 일반적이지 않습니다. 질문을 너무 빨리 읽으십시오. – c0deNinja

답변

3

Devise는 regexp를 사용하여 전자 메일의 유효성을 검사합니다 (regexp를 사용하면 매우 논리적입니다). 유증에 의해 사용

정규 표현식은 다음과 같습니다 당신이 고안 사용하는 경우에는 유증 이니셜이 등록 특급을 변경할 수 있습니다

# Email regex used to validate email formats. It simply asserts that 
    # an one (and only one) @ exists in the given string. This is mainly 
    # to give user feedback and not to assert the e-mail validity. 
    mattr_accessor :email_regexp 
    @@email_regexp = /\A[^@][email protected]([^@\.]+\.)+[^@\.]+\z/ 

(유증 코드에서 복사).

귀하가 궁리 할 필요가 없다면 이메일 확인을 직접 구현할 수 있습니다.

아주 좋은 샘플은 공식 레일 가이드 Active Record Validations document에 나와 있습니다.

class EmailValidator < ActiveModel::EachValidator 
    def validate_each(record, attribute, value) 
    unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i 
     record.errors[attribute] << (options[:message] || "is not an email") 
    end 
    end 
end 
+0

이것은 불행히도 내가 요구하는 것이 아닙니다. 내 게시물에서 말한 것처럼 전자 메일 유효성 검사가 이미 있으며 사용자 모델에서 설정 한 첫 번째 항목 중 하나입니다. 내가 말하는 것은 이메일 확인이다. cf 질문에 대한 첫 번째 대답에 대한 나의 의견. +1에 의해 Devise가 사용한 정규식을 찾는다. – Myna

+0

아, 정말 죄송합니다. 그리고 +1에 대해 대단히 감사합니다. 그래서 나는 전자 메일 확인에 대한 의견을 말할 수 있다고 생각합니다. 내 프로젝트에서 이메일 확인 모듈에 대한 기능 만 고려할 수도 있습니다. 비밀 번호 암호화, 세션 관리 등은 확인 토큰을 처리하는 것보다 훨씬 쉽습니다 (글쎄, 그렇게 어렵지는 않지만 여러 번 똑같은 일을 할 때 지루해지며 확인 부분에 많은 코드가 필요합니다). 나는 전자 우편 확인 관련 일을 위해서만 보석이 있어야한다는 것에 동의한다. –

+2

다시 귀하의 질문에 대답하지만, [이 답변] (http://stackoverflow.com/questions/3984977/email-confirmation-in-rails-without-using-any-existing-authentication-gems-plugi) 포인트 이메일 확인을 위해해야 ​​할 일이 많이 있습니다. 이상한 점은이 일에만 도서관이 없다는 것입니다. –