0

I have read:

Concerns, Decorators, Presenters, Service Objects, Helpers, Help me Decide

and trying to figure out the difference between presenters, view objects, decorators, exhibits, and helpers.

I have multiple active record models that I need to display in a view using the show method.

Examples of what I need to display are:

ClassModule SomeTypeOfPattern
   def name
     User.name
   end

   def car_name
     User.car.listing.car_name
   end
   def car  
      User.car
   end
   def car_marketing
     User.car.marketing
   end

   # AND 20 to 30 other similar delegations/methods from 4 related tables
end

So if I delegate these relationships, what should the class/module be called? A presenter? Decorator? View Object? I am so confused by all these terms, but want to follow convention.

user2012677
  • 5,465
  • 6
  • 51
  • 113

1 Answers1

1

The example you are showing looks like a Presenter to me.

A presenter is an object that presents other information with its own interface.

If you changed what you have just a little, you could use it like this:

presenter

class UserCarPresenter
  attr_reader :user

  def initialize(user)
    @user = user
  end

  def name
    user.name
  end

  def car_name
    user.car.listing.car_name
  end

  def car  
    user.car
  end

  def car_marketing
    user.car.marketing
  end
end

controller

class CarsController < ApplicationController
  def show
    @user = UserPresenter.new(user)
  end
end

view

<h1><%= @user.name %></h1>
<h2><%= @user.car_name %></h1>
Unixmonkey
  • 18,485
  • 7
  • 55
  • 78