Last updated
Decorating Devise's current_user with Draper
I’ve become a big fan of decorators, especially Draper.
Decorators allow you to move view related functionality for your models in to separate decorator classes. This keeps both your models and views clean and readable.
Anyway, if you use Devise you’re provided with a current_user
helper. However, this helper returns an instance of User
- without your decorators. To enable decorators for your current_user
by default, simple add this to app/controllers/application_controller.rb
:
1def current_user
2 UserDecorator.decorate(super) unless super.nil?
3end
Now, anywhere in your views where you call current_user
you’ll get a decorated version instead.