我读过了:
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
因此,如果我委托这些关系,那么应该调用类/模块?主持人?装饰?查看对象?我对所有这些术语感到困惑,但是想遵循惯例。
您展示的示例对我来说就像是一个演示者。
演示者是一个通过其自己的界面呈现其他信息的对象。
如果你改变了一点,你可以像这样使用它:
主持人
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>