2015-05-27 11 views
13

W Railsach 4.2.0 używam klejnotu Devise do uwierzytelnienia - devise 3.4.1.Szyny 4 - Wymyśl, pomiń powiadomienie o potwierdzeniu: after_create

E-mail z potwierdzeniem zostanie wysłany, gdy tylko zostanie utworzony użytkownik. Musimy pominąć ten e-mail z potwierdzeniem i wysłać niestandardowy e-mail z linkiem potwierdzającym. Pomóż mi rozwiązać ten problem.

:confirmable jest stosowany w modelu użytkownika.

+1

chcesz "skip" potwierdzenie e-mail lub chcesz "zmiana" potwierdzenie Poczta? –

Odpowiedz

21

Można spróbować tej

@user.skip_confirmation! 
@user.save 

połączenia skip_confirmation! przed zapisaniem rekordu użytkownika.

Aby pominąć potwierdzenie, tylko można użyć skip_confirmation_notification!

@user.skip_confirmation_notification! 
@user.save 

nadzieję, że to pomaga!


oprócz

jeśli chcesz pominąć potwierdzenie na tej samej linii, bez tworzenia zmiennej i nie trzeba, aby potwierdzić, że dany użytkownik, na przykład w seeds.rb:

User.create(email: "#{role_name}@example.com", 
      password: 'password', 
      password_confirmation: 'password', 
      confirmed_at: Time.now.utc, # skip confirmation) 
+1

Jeśli dodaję 'skip_confirmation! ', To potwierdzi to konto użytkownika. Ale to nie powinno działać w ten sposób, użytkownik powinien potwierdzić swoje konto poprzez e-mail (niestandardowy adres e-mail) –

+0

Oczywiście można wysłać niestandardową wiadomość e-mail po pominięciu e-maila z potwierdzeniem opracowania – RSB

+0

Po potwierdzeniu konta użytkownika, jaki jest cel wysyłania niestandardowej wiadomości e-mail z linkiem potwierdzającym? –

2

Zamiast wyłączać wbudowaną wiadomość e-mail z potwierdzeniem w programie i wysyłać własny adres e-mail, możesz dostosować wiadomość e-mail z potwierdzeniem. Można wygenerować opracować przeglądaj pliki za pomocą

rails generate devise:views 

a następnie dostosować e-mail z potwierdzeniem.

+0

to jest właściwa odpowiedź. po prostu zastąp szablon widoku! –

0

Można to zrobić:

może to są UserController

@user = User.new(email: "#{role_name}@example.com", 
     password: 'password', 
     password_confirmation: 'password', 
     confirmed_at: Time.now.utc, # skip confirmation) 
@user.skip_confirmation! 
@user.confirm 
if @user.save 
    MyMailer.confirmation(@user) 
else 
# your implementation 
end 

Zobacz doc https://github.com/plataformatec/devise/wiki/How-To:-Use-custom-mailer