Program Tip

Devise-이메일을 보내지 않고 확인 된 사용자 계정을 만드시겠습니까?

programtip 2020. 12. 10. 21:00
반응형

Devise-이메일을 보내지 않고 확인 된 사용자 계정을 만드시겠습니까?


나는 facebook과 고안을 통합했다. 이제 사용자가 자신의 페이스 북 계정으로 로그인 한 후 사용자 계정을 만들면

  user = User.create(:email => data["email"], 
                     :password => Devise.friendly_token[0,20]) 
  user.confirmed_at = DateTime.now
  user.save!

계정이 확인 되었음에도 불구하고 확인 이메일은 여전히 ​​실행됩니다. 이메일 실행을 어떻게 끌 수 있는지 아십니까?


확인 콜백은 생성 후에 발생하므로 confirmed_at수동으로 설정하기 전에 예제의 1 행에서 발생합니다 .

의견에 따르면 가장 올바른 방법은이 목적으로 제공된 방법을 사용하는 것 #skip_confirmation!입니다. confirmed_at수동 설정 은 작동하지만 제공된 API를 우회하므로 가능하면 피해야합니다.

따라서 다음과 같습니다.

user = User.new(user_attrs)
user.skip_confirmation!
user.save!

원래 답변 :

인수 confirmed_at와 함께 전달하면 create계정이 이미 "확인"되었는지 여부에 대한 테스트는 해당 날짜가 설정되었는지 여부를 확인하는 것이므로 메일을 보내지 않아야합니다.

User.create(
  :email => data['email'], 
  :password => Devise.friendly_token[0,20], 
  :confirmed_at => DateTime.now
)

또는 사용자 레코드를 작성 하는 new대신 사용 create하십시오.


이메일 전송을 막으려면 다음 #skip_confirmation_notification과 같이 사용할 수 있습니다 .

user = User.new(your, args)
user.skip_confirmation_notification!
user.save!

문서 보기

after_create / after_update 확인 / 재확인 알림 이메일 전송을 건너 뜁니다. #skip_confirmation!과 달리 기록에는 여전히 확인이 필요합니다.

참고 URL : https://stackoverflow.com/questions/7465467/devise-create-user-account-with-confirmed-without-sending-out-an-email

반응형