2012-03-06 5 views
6

Wdrażam program Devise w aplikacji Rails 3.2 i chcę, aby system zapamiętał użytkownika.Wymyślanie pamięci to nic nie pamiętając

/app/models/user.rb:

class User < ActiveRecord::Base 
    devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable 
    attr_accessible :name, :email, :password, :password_confirmation, :remember_me 
end 

/db/schema.rb:

create_table "users", :force => true do |t| 
    t.string "name" 
    t.string "email" 
    t.string "password" 
    t.datetime "created_at",        :null => false 
    t.datetime "updated_at",        :null => false 
    t.string "encrypted_password",  :default => "", :null => false 
    t.string "reset_password_token" 
    t.datetime "reset_password_sent_at" 
    t.datetime "remember_created_at" 
    t.integer "sign_in_count",   :default => 0 
    t.datetime "current_sign_in_at" 
    t.datetime "last_sign_in_at" 
    t.string "current_sign_in_ip" 
    t.string "last_sign_in_ip" 
end 

Chciałbym to zrobić w najbardziej standardowym/domyślny sposób, a biorąc pod uwagę brak dokumentacji, domyślam się, że "po prostu działa" dla niektórych osób i po prostu nie działa dla mnie. Na przykład użyłem generatora Devise do zbudowania migracji dla użytkownika i nie zastąpiłem żadnych kontrolerów. Dostaję pole wyboru, ale kiedy to sprawdzam, informacje o użytkowniku nie są pamiętane.

Czego mi brakuje? Czy brakuje czegoś z mojego schematu, który generator miał stworzyć?

+0

Myślę, że Devise nie ma dużo Doca na ten temat. Nie wiemy, czy oddanie do zapamiętania jako strategia w User jest wystarczające, czy nie. A jeśli wystarczy, dlaczego nie działa, gdy przeglądarka jest zamknięta, mimo że zmienna sesji nadal zawiera informacje o użytkowniku. –

Odpowiedz

0

spróbować grać z

current_user.remember_me = true 
current_user.remember_me = false 

Twój schema.rb wygląda poprawnie.

+0

czy to nie jest migracja? – alony

+0

oh .. tak oczywiście .. –

0

Nie jestem pewien, czy to jest to, czego meant-

Według Module: Devise::Models::Rememberable Devise na :rememberable służy do zapisywania danych logowania użytkownika, który jest aktualnie zalogowany. Oznacza to, że pamięta poświadczenia po zamknięciu przeglądarkę i się nie wylogowuję.

Jednak nie spowoduje to zapisania danych logowania (e-mail, hasło), jeśli się wylogujesz.