Devise と ActiveDecorator の連携

ActiveDecorator はモデルをとてもスッキリさせてくれるので好き。 ところが、何も考えずに、Deviseのcurrent_userでも使えると思って

<% if user_signed_in? %>
  <%= current_user.icon %>
<% end %>

とか書いたところ、エラーが。まぁ、そうだよね。 というわけで、ソース見て、こんな感じで、ApplicationController に Deviseのhelperをoverrideしたメソッドを書いた。

class ApplicationController < ActionController::Base

  def current_user
    ActiveDecorator::Decorator.instance.decorate(super) unless super.nil?
    super
  end
end