21 lines
1.0 KiB
Markdown
21 lines
1.0 KiB
Markdown
+++
|
|
date = "2012-04-14"
|
|
title = "Decorating Devise's current_user with Draper"
|
|
tags = ["Rails", "devise", "draper", "decorators"]
|
|
slug = "decorating-devise-s-current_user-with-draper"
|
|
+++
|
|
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`:
|
|
|
|
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)
|
|
|