2013-01-19 11 views
9

Buduję aplikację, w której chciałbym, aby użytkownicy byli automatycznie zapamiętywani na swoich komputerach, bez zaznaczania pola wyboru "zapamiętaj mnie".Jak automatycznie zachować użytkownika zapamiętanego w Devise

Przeczytałem, że mogę zadzwonić pod numer @user.remember_me!, ale nie wiem, gdzie go wywołać, ponieważ kontrolery Devise są ukryte.

Rozważałem dodanie pola ukrytego pola wyboru w formularzu sign_in z zaznaczonym domyślnie polem wyboru, ale miałem nadzieję, że mogę to zrobić po stronie kontrolerów.

Każdy pomysł, jak to zrobić?

Dzięki!

+0

to powinno pomóc: https://groups.google.com/forum/?fromgroups=#!topic/plataformatec-devise/fGHzF1imqJ0 –

Odpowiedz

15

Myślę, że dostosowywanie kontrolera programistycznego to sposób, w jaki można się tutaj udać.

Cel: automatycznie ustawiaj dla mnie wszystkich.

Najpierw utwórz kontroler sesji programisty. Powiedzmy szyn tras o tym

config/routes.rb

devise_for :users, :controllers => {:sessions => 'sessions'} 

app/controllers/sessions_controller.rb

class SessionsController < Devise::SessionsController 

    def create 
    params[:user].merge!(remember_me: 1) 
    super 
    end 

end 

W ten sposób, użytkownik Pamiętajmy mnie zawsze będzie ustawione na true. tak!

Następnie należy edytować formularz logowania, aby nie wyświetlać pola wyboru remember_me.

również zmienić w inicjalizatorze coś daleko:

#config.remember_for = 2.weeks 
config.remember_for = 1.year 
+0

dzięki za poświęcenie czasu! :) – Karan

+0

Właśnie zaimplementowałem to. pracował jak urok;) – Karan

+0

hm, to nie działa dla mnie, patrzę na log i nie widzę zmiany pola remember_created_at również muszę się logować do mojej aplikacji za każdym razem po zamknięciu przeglądarki :( –

0

To powinna być stała opcja, aby można było to zrobić po haku tworzenia dla użytkownika, ponieważ ma on być stałą opcją.

+0

Przypuszczam, że będzie w modelu użytkownika, prawda? – Karan

+0

choć nie byłoby to, że remember_me będzie tylko raz ... kiedy tworzony jest rekord? ponieważ remember_me prawdopodobnie wygasłoby za 2 tygodnie, nie miałoby to żadnego efektu po 2 tygodniach ... – Karan

Powiązane problemy