around_action :set_time_zone
(またはbefore_filter :set_time_zone
)をアプリケーションコントローラに追加する必要があります。問題は、current_user
が常にnil
であることです。これは、Devise認証がフィルタの後に実行されるためです。Devise認証後にフィルタを追加する
私はcurrent_user
にアクセスしてタイムゾーンを取得できるように、Devise認証後にフィルタを実行したいと思います。
マイコード:
class ApplicationController < ActionController::Base
around_action :set_time_zone
private
def set_time_zone
current_user.time_zone # this raises an expception because current_user is nil
end
end
class ExampleController < ApplicationController
before_action :authenticate_user!
end
私はExampleController
でauthenticate_user!
を維持し、ApplicationController
でset_time_zone
を維持したいと思います。
私もappend_before_filter :set_time_zone
を使ってみましたが、問題は解決しません。
は私がGitHubの上で問題を開いた:これは(https://github.com/rails/rails/issues/31259) – collimarco