-
Notifications
You must be signed in to change notification settings - Fork 2
Presenter Objects
cavalle edited this page Dec 23, 2012
·
13 revisions
a.k.a. Decorators / View objects / View models
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- https://github.com/amatsuda/active_decorator
- https://speakerdeck.com/blowmage/presenters-and-decorators-a-code-tour
# 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 %>