Deviseを使用してユーザーセッション/登録を管理するユーザーがサインインするたびに、およびデバイスによって接続用のホームページにリダイレクトされる前に、特定のタスク(たとえば、この特定のユーザーのユーザーテーブルの一部のフィールドを更新する)を実行する必要があります。ユーザー。
devise SessionsControllerをオーバーライドする必要がありますか?そうであれば、どのようにオーバーライドしますか?
Deviseを使用してユーザーセッション/登録を管理するユーザーがサインインするたびに、およびデバイスによって接続用のホームページにリダイレクトされる前に、特定のタスク(たとえば、この特定のユーザーのユーザーテーブルの一部のフィールドを更新する)を実行する必要があります。ユーザー。
devise SessionsControllerをオーバーライドする必要がありますか?そうであれば、どのようにオーバーライドしますか?
または、独自のセッションコントローラーを作成することもできます
class SessionsController < Devise::SessionsController
def new
super
end
def create
self.resource = warden.authenticate!(auth_options)
set_flash_message(:notice, :signed_in) if is_navigational_format?
sign_in(resource_name, resource)
if !session[:return_to].blank?
redirect_to session[:return_to]
session[:return_to] = nil
else
respond_with resource, :location => after_sign_in_path_for(resource)
end
end
end
そしてroutes.rb
追加で:
devise_for :users, controllers: {sessions: "sessions"}
Devise はafter_database_authentication
コールバック メソッドを提供します。現在認証されているユーザー オブジェクトに完全にアクセスできます。
ログインが成功するたびに現在のユーザー名を更新する場合は、以下のように実行できます。
class User < ActiveRecord::Base
devise :database_authenticatable
def after_database_authentication
self.update_attributes(:name => "your name goes here")
end
end