Devise の current_user メソッドは次のようになります。
def current_#{mapping}
@current_#{mapping} ||= warden.authenticate(:scope => :#{mapping})
end
ご覧のとおり、@current_#{mapping}
メモ化されています。あなたの場合、次のようなものを使用したいと思います:
def default_profile
@default_profile ||= Profile.find(current_user.default_profile_id)
end
あらゆる場所での使用に関しては、コントローラーとビューの両方で使用することを前提としています。その場合は、次のように ApplicationController で宣言します。
class ApplicationController < ActionController::Base
helper_method :default_profile
def default_profile
@default_profile ||= Profile.find(current_user.default_profile_id)
end
end
を使用helper_method
すると、ビューでこのメモ化された default_profile にアクセスできます。このメソッドを にApplicationController
配置すると、他のコントローラーから呼び出すことができます。