Devisegemは認証に使用されます。
Railsセッションはデータベースに保存されます。
Rails 3の外部でセッションを使用するために、というモデルを作成しましたSession
。テーブルuser_id
に列を追加しました。sessions
ユーザーがサインインしたらuser_id
、セッションテーブルの列を更新する必要があります。だからApplicationController
私はメソッドを追加しました:
protected
def after_sign_in_path_for(resource)
@session = Session.find_by_session_id(request.session_options[:id])
@session.update_attribute(:user_id, current_user.id)
stored_location_for(resource) || root_path if @session.save
end
しかし、リダイレクトの直後に、最近のものsession
が破棄され、DB内の別のセッションが空白になってしまいますuser_id
。
user_id
ログインに成功したときに一度書き込むのに最適な方法は何ですか?