2012-07-08 13 views
20

Chciałbym użyć opcji devise: reconfirmable w moim modelu użytkownika, więc za każdym razem, gdy użytkownik zmieni swój adres e-mail, musi potwierdzić to za pomocą linku wysłanego przez e-mail.Wymyślić rekonfigurowalne

Dużym problemem jest to, że e-mail nie zostanie wysłana ...

Moja konfiguracja jest z devise 2.1.2 to: model

użytkownik:

attr_accessible: unconfirmed_email, ... 

devise :invitable, :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable, :omniauthable 

w devise initilizer .rb:

config.reconfirmable = true 

na trasach:

devise_for :users 

w postaci pola modelu unconfirmed_email zostanie poprawnie ustawiony. Sprawdziłem to przez konsolę.

Pierwszy e-mail z potwierdzeniem, gdy użytkownik zarejestruje się na stronie, zostanie wysłany bez problemu.

Próbowałem debugowania problem z dodawaniem tego kodu do katalogu initializers nadpisać methode opracować który pobiera wyzwalanych w after_update haka:

module Devise::Models::Confirmable 
    def send_confirmation_instructions 
    debugger 
    end 
end 

wydaje się send_confirmation_instructions nigdy nie nazywa, ponieważ nigdy nie dostać się do debugger.

Czy muszę w jakiś sposób zadzwonić ponownie, czy automatycznie uruchamia się ona po ustawieniu atrybutu modelu "unconfirmed_email" na nowy adres e-mail?

Dziękując za pomoc, j.

+1

Dla reconfirmable pracować musisz dodać nową kolumnę do tabeli użytkowników 't.string: unconfirmed_email # Tylko jeśli używasz ponownego potwierdzenia' Czy już to zrobiłeś? – Himshwet

+0

cześć janders. to wszystko skonfigurowane, mam atrybut w moim modelu użytkownika i attr_accessible ... Nadal nie rozwiązałem tego problemu, więc każda pomoc jest bardzo dobrze przyjęta. – user1311103

+0

Przykro mi, nie mogę się dowiedzieć, co jest nie tak – Himshwet

Odpowiedz

33

OK, to jest żenujące ..

Po nurkowaniu w kodzie opracowania, zorientowali się, że nie trzeba ustawić atrybut modelu użytkownika unconfirmed_email, ale wystarczy zmienić istniejący atrybut e-mail. Atrybut unconfirmed_email jest używany wewnętrznie w Devise do przechowywania adresu e-mail, dopóki nie zostanie potwierdzony.

Późniejsza wersja programu devise gem wyjaśnia to w początkowej migracji. Oto odcinek „POTWIERDZALNE” (zwróć uwagę na komentarz na ostatniej linii) z XXX_devise_create_users.rb migracji:

## Confirmable 
    t.string :confirmation_token 
    t.datetime :confirmed_at 
    t.datetime :confirmation_sent_at 
    t.string :unconfirmed_email # Only if using reconfirmable 

Przepraszamy za przeszkadza, ale mam nadzieję, że to pomoże ktoś ma ten sam problem ...

+2

Dzięki za to. Dobrze wiedzieć, że Devise "automagicznie" zapełnia 'unconfirmed_email' kiedy aktualizuję' email' w modelu. Nie zapomnij oznaczyć swojej odpowiedzi jako "Zaakceptowany" (tak, nawet jeśli odpowiedziałeś sam!). –

+0

Tak ... Pomyślałeś tak ... nawet gdyby to było po 2 latach ... to było dla mnie pomocne. :) – Alfie

Powiązane problemy