2011-01-04 15 views

Odpowiedz

50

Metoda jest dostępna dla każdego modelu confirmable.

@user = User.new params[:user] 
@user.skip_confirmation! # Sets confirmed_at to Time.now, activating the account 
@user.save 

Konto użytkownika zostanie jednak uaktywnione. Jeśli nie chcesz tego, kontynuuj czytanie.

Devise używa warunkowych wywołań zwrotnych do wygenerowania tokena potwierdzenia i wysłania wiadomości e-mail. Połączenia zwrotne będą wywoływane tylko wtedy, gdy confirmation_required? zwróci true. Przedefiniować go od modelu:

def confirmation_required? 
    false 
end 

Będzie to jednak uczynić metoda active_for_authentication? zawsze zwraca wartość true, ponieważ trwa, czy wymagane jest potwierdzenie pod uwagę. Musimy przedefiniować również to:

def active_for_authentication? 
    confirmed? || confirmation_period_valid? 
end 

W ten sposób konto pozostanie nieaktywne i nie zostanie wysłany e-mail z potwierdzeniem. Będziesz musiał ręcznie aktywować użytkownika dzwoniąc pod numer confirm! lub po prostu ustawiając confirmed_at na dowolną datę.

To dość hack, ale powinno działać.

Dla porównania: confirmable.rb

+1

dziękuję. ale nie chcę, aby użytkownik mógł się logować. czy ustawienie użytkownika na potwierdzone pozwoli użytkownikowi na pewne logowanie? co to zrobi, po prostu zapobiegnie wysyłaniu e-maili? dzięki – AnApprentice

+0

Również, gdy próbuję zapisać nowego użytkownika, jak wspomniano powyżej, otrzymuję FALSE na @ user.save .... oprócz e-maila, jakie inne pola są wymagane, aby zapisać użytkownika? – AnApprentice

+0

Zaktualizowałem moją odpowiedź. Wymagane są wszystkie pola oznaczone jako nie puste na schemacie lub których obecność sprawdza poprawność modelu. Jeśli ich nie dostarczysz, aktywny rekord nie zapisze twojego obiektu. –

9

Chcę tylko dodać, że w przyszłości opracować od 2.2 jest teraz dostępny jako metoda skip_confirmation_notification! studni, które w zasadzie nie wszystko Matheus' post bez przedefiniowanie metody w modelu.

Powiązane problemy