2013-01-19 37 views
9

"私を覚えている"チェックボックスを使わずに、ユーザーが自分のコンピューターに自動的に記憶されるようにするアプリケーションを構築しています。自動的にユーザーをDeviseに記憶させる方法

私は@user.remember_me!に電話しなければならないかもしれないが、Deviseコントローラは隠されているのでどこから呼び出すべきかはわかりません。

デフォルトでマークされているチェックボックスを使って、sign_inフォームに隠しチェックボックスフィールドを追加することを検討していましたが、私はコントローラ側でこれを行うことができると考えていました。

どのようにこれを行うことができますか?

ありがとうございます!

+0

これは役立つはず:https://groups.google.com/forum/?fromgroups=#!topic/plataformatec-devise/fGHzF1imqJ0 –

答えて

15

私はあなたのデバイスコントローラをカスタマイズすることがここに行く方法だと思います。

目標:自動的にすべての人に覚えておくように設定します。

まず、deviseセッションコントローラを作成します。さんはroutes.rbを設定/

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

アプリ/コントローラ/ sessions_controller.rb

class SessionsController < Devise::SessionsController 

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

end 

それについてのレールのルートをこのように教えてみましょう、のは、私を覚えて、ユーザーが常になりますtrueに設定します。わーい!

次に、ログインフォームを編集してremember_meチェックボックスを表示しないようにします。あなたが工夫で、このプル要求読めば

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

時間をとってくれてありがとう! :) – Karan

+0

私はそれを実装しました。 ) – Karan

+0

hm、それは私のためには動作しません、私はログを見て、remember_created_atフィールドの変更を見ていませんまた、私は私のアプリケーションに私はブラウザを閉じるたびにログインする必要があります:( –

0

これは永続的なオプションである必要があるため、永続的なオプションである必要があります。これは、ユーザーの後作成フックで行うことができます。

+0

を私は右、それはユーザーのモデルになることを前提としますか? remember_meは一度だけではありませんが、レコードが作成されると、 – Karan

+0

になりますか? remember_meはおそらく2週間で有効期限が切れるので、2週間後には何の効果もありません... – Karan

12

また、遠く離れて何かに初期化子でこれを変更https://github.com/plataformatec/devise/issues/1513を、デフォルトで覚えておくべき認可の方法は、単にあなたのUserクラスに定義することが表示されます。

class User 
    def remember_me 
    true 
    end 
end 
関連する問題