由于我是Rails世界的初学者,我对这些术语有些迷惑... 标头中有一些代码,与模型无关。我只想显示还是不显示,取决于页面用户。 我知道这有点简单,助手也会做得很好,但是是否可以将代码适合演示者或装饰器中? 我什么时候必须使用它们?我真的还不明白。
答案 0 :(得分:1)
tl; dr : 在这种情况下使用演示者
详细说明: 装饰器是一种结构设计模式,可以包装其他对象并添加新功能,而无需扩展正在装饰的类。
另一方面,演示者应该使用您要呈现的对象的方法来格式化数据,以使其显示出来。例如。您有一个User
模型:
class User < ActiveRecord:Base
# it has first_name and last_name columns
end
,并且您想在视图中显示全名而没有太多逻辑。您可以像这样创建UserPresenter
类:
class UserPresenter
def initialize(user)
@user = user
end
def full_name
"#{@user.last_name} #{@user.first_name}"
end
end
因此,您无需单独调用两个属性,而只需通过演示者完成
user = User.new(first_name: "John", last_name: "Doe")
user_presenter = UserPresenter.new(user)
user_presenter.full_name #=> "Doe John"