我读过:
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
因此,如果我委派了这些关系,则应调用什么类/模块?主持人?装饰员?查看对象?我对所有这些术语感到困惑,但想遵循惯例。
答案 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>