Devise は、 などのいくつかのヘルパー メソッドを提供しcurrent_user
ます。ActiveSupportを使用on_load
して、これらのヘルパーをコントローラーに遅延ロードします。
ただし、これは、Rails を初めて起動したときに、これらのヘルパー メソッドのエイリアスを作成しようとしても正しく機能しないことを意味します。例えば:
# in my ApplicationController
alias_method :devise_current_user, :current_user
def current_user
user = devise_current_user
if !user && !devise_controller?
foo
end
return user
end
これにより、Rails が最初に初期化されたときに「メソッドが見つからないというエラー」が発生します。最初に Rails を起動し、次にこれらのコードを追加すると、機能するようになります (メソッドを正しくエイリアシングしてオーバーライドします)。
on_load
これらのヘルパーのエイリアシング/オーバーライドを適切に行うには?