【问题标题】:Decorator/Presenter/Exhibits and helpers装饰者/主持人/展览和助手
【发布时间】:2019-08-06 22:33:47
【问题描述】:

我已阅读:

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】:

    您展示的示例在我看来就像一个演示者。

    演示者是一个对象,它呈现具有自己的界面的其他信息。

    如果你改变了你所拥有的,你可以这样使用它:

    演示者

    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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-04
      • 2017-04-18
      • 2011-05-24
      • 2015-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多