0.02
No commit activity in last 3 years
No release in over 3 years
Ultra lightweight decorator for Rails models.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

>= 0
 Project Readme

Gem Version Code Climate Travis CI

LittleDecorator: Rails Model Decorator

LittleDecorator is an ultra-lightweight decorator for Rails models. There are only 42 lines of code in lib.

Installation

Include it in your Gemfile.

gem 'little_decorator'

Usage

Create Your Decorator

Add your decorator in app/decorators:

# app/decorators/user_decorator.rb
class UserDecorator < LittleDecorator

  def full_name
    "#{first_name} #{last_name}"
  end

  def updated_at
    record.updated_at.strftime("%A, %B %e, %Y")
  end

end

Method calls are sent to the model via method_missing, so you can call model methods directly as in the full_name method defined above.

Call model methods with record when you want to override a method but still get to the original model.

You can access helper methods and route helpers in your decorators.

Decorate Your Objects

The API consists of a single method: decorate. This method will be available in your controllers and views. You can call decorate on an object or a collection. Examples:

In Controllers

Just call decorate:

decorate(user)

In Views

Just call decorate:

<%= decorate(user) %>

On Collections

Just call decorate. You'll get an array of decorated objects

decorate(users)
<%= decorate(users) %>

Vim Projections

For use with Rails.vim. Place in config/projections.json.

{
  "app/decorators/*_decorator.rb": {
    "command": "decorator",
    "alternate": "spec/decorators/%s_decorator_spec.rb",
    "template": "class %SDecorator < LittleDecorator\nend"
  }
}

Contribute

Pull requests are welcome, but I want to keep this gem simple.