0

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これらのヘルパーのエイリアシング/オーバーライドを適切に行うには?

4

0 に答える 0