装饰/演示/展览和帮助

问题描述 投票:0回答:1

我读过了:

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

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

ruby-on-rails decorator helper ruby-on-rails-5.2 presenter
1个回答
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>
© www.soinside.com 2019 - 2024. All rights reserved.