装潢/主持人/展览和助手

时间:2019-03-15 19:25:01

标签: ruby-on-rails decorator helper ruby-on-rails-5.2 presenter

我读过:

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

并试图弄清楚演示者,查看对象,装饰者,展览和助手之间的区别。

我需要使用show方法在视图中显示多个活动记录模型。

我需要显示的示例如下:

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

因此,如果我委派了这些关系,则应调用什么类/模块?主持人?装饰员?查看对象?我对所有这些术语感到困惑,但想遵循惯例。

1 个答案:

答案 0 :(得分:1)

您显示的示例对我来说就像一个演示者。

演示者是通过其自己的界面演示其他信息的对象。

如果仅更改了一点,则可以这样使用:

演示者

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

控制器

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

视图

<h1><%= @user.name %></h1>
<h2><%= @user.car_name %></h1>