Skip to content
cavalle edited this page Dec 23, 2012 · 13 revisions

a.k.a. Decorators / View objects / View models

Version #1

http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/

class DonutChart
  def initialize(snapshot)
    @snapshot = snapshot
  end

  def cache_key
    @snapshot.id.to_s
  end

  def data
    # pull data from @snapshot and turn it into a JSON structure
  end
end

Version #2

# app/models/user.rb
class User < ActiveRecord::Base
  # first_name:string last_name:string website:string
end
# app/decorators/user_decorator.rb
module UserDecorator
  def full_name
    "#{first_name} #{last_name}"
  end

  def link
    link_to full_name, website
  end
end
# app/controllers/users_controller.rb
class UsersController < ApplicationController
  def index
    @users = User.all
  end
end
<%# app/views/users/index.html.erb %>
<% @users.each do |user| %>
  <%= user.link %><br>
<% end %>

Clone this wiki locally