14

「私を記憶する」チェックボックスを使用せずに、ユーザーがコンピューターに自動的に記憶されるようにするアプリを構築しています。

を呼び出す必要があるかもしれないと読みましたが@user.remember_me!、Devise コントローラーが非表示になっているため、どこで呼び出すかがわかりません。

デフォルトでチェックボックスがマークされた状態で、sign_inフォームに非表示のチェックボックスフィールドを追加することを検討していましたが、コントローラー側でこれを実行できることを望んでいました。

これをどのように行うことができるか考えていますか?

ありがとう!

4

3 に答える 3

21

devise でこのプル リクエストを読む場合: https://github.com/plataformatec/devise/issues/1513、デフォルトで認可された記憶方法は、 User クラスで定義するだけのように見えます。

class User
   def remember_me
     (super == nil) ? true : super
   end
end
于 2014-07-13T00:21:28.687 に答える
16

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

目標: 自動的に全員の記憶を設定する。

まず、devise セッション コントローラーを作成します。それについてレールルートに伝えましょう

config/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
于 2013-01-19T19:27:34.347 に答える
0

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

于 2013-01-19T18:11:20.127 に答える