Я немного запутался в этих терминах, так как я новичок в мире Rails... У меня в заголовке есть код, не связанный с моделью. Я просто хочу показать это или нет, в зависимости от того, на какой странице находится пользователь. Я знаю, что это довольно просто, и помощники тоже справятся с этим довольно хорошо, но можно ли поместить код в презентатор или декоратор? Когда я должен их использовать? Я правда еще не понимаю.
Должен ли я использовать ведущий или декоратор?
Ответы (1)
tl;dr: используйте Presenter в этом сценарии.
Уточнение. Декоратор – это структурный шаблон проектирования, который обертывает другие объекты и добавляет новые функции без необходимости расширения класса, который вы украшаете.
С другой стороны, 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"
person
Michael Kosyk
schedule
10.06.2019
@EdiJunior - без проблем. Я настоятельно рекомендую немного изучить Ruby, прежде чем переходить к Ruby on Rails (распространенная ошибка многих молодых разработчиков — сначала изучить фреймворк, а затем язык). После этого возьмите книгу «Шаблоны проектирования в Ruby» Расса Олсена и послушайте Санди Мец на YouTube. Вы не пожалеете :)
- person Michael Kosyk; 10.06.2019