Должен ли я использовать ведущий или декоратор? - PullRequest
0 голосов
/ 10 июня 2019

Я вроде как потерял эти термины, так как я новичок в мире Rails ... У меня есть некоторый код в моем заголовке, не связанный с моделью.Я просто хочу показать это или нет в зависимости от страницы пользователя.Я знаю, что это довольно просто, и помощники тоже неплохо справились бы, но возможно ли разместить код в презентере или декораторе?Когда я должен их использовать?Я действительно еще не понимаю.

1 Ответ

1 голос
/ 10 июня 2019

ТЛ; др : Используйте докладчика в этом сценарии

Разработка : Декоратор - это структурный шаблон проектирования, который оборачивает другие объекты и добавляет новые функциональные возможности без необходимости расширять класс, который вы украшаете.

A Presenter должен использовать методы объекта, который вы представляете, для форматирования данных так, как вы хотите их показать. Например. у вас есть 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"
...