25 lines
1.1 KiB
Markdown
25 lines
1.1 KiB
Markdown
---
|
|
title: "Decorating Devise's current_user with Draper"
|
|
kind: article
|
|
slug: decorating-devise-s-current_user-with-draper
|
|
created_at: 2012-04-14
|
|
tags:
|
|
- Rails
|
|
- devise
|
|
- draper
|
|
- decorators
|
|
---
|
|
I've become a big fan of decorators, especially [Draper](https://github.com/jcasimir/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`:
|
|
|
|
:::ruby
|
|
def current_user
|
|
UserDecorator.decorate(super) unless super.nil?
|
|
end
|
|
|
|
Now, anywhere in your views where you call `current_user` you'll get a decorated version instead.
|
|
|
|
[Check here to see how to use Draper with Sorcery](http://ariejan.net/2012/11/02/decorating_sorcery_current_user_with_draper) |