Я использую объект Presenter с пространством имен, чтобы помочь реорганизовать некоторую логику представления представления для атрибутов моей модели.
Для одного объекта, отправляемого с контроллера, я бы сделал
@user = Users::UserPresenter.new(@user)
и это работает нормально. Для запроса пользователей я создал метод .present(), который сопоставляет и применяет UserPresenter.new к каждому пользователю, поэтому я делаю
@users = Users::UserPresenter.present(users)
и это работает нормально. Но как насчет того, когда я передаю объект, который затем повторяет отношения в представлении. Простым примером будет
<% appointment.users.each do |user| %>
<% user = Users::UserPresenter.new(user) %>
<li> <%= user.age%></li>
<% end %>
Более сложным примером может быть
<% appointment.appointment_host.family.users.each do |user| %>
<% user = Users::UserPresenter.new(user) %>
<li> <%= user.age%></li>
<% end %>
user_presenter.rb
module Users
class UserPresenter < SimpleDelegator
# methods
end
end
Мне не нравится устанавливать объект Presenter в представлении. Как лучше справиться с этим? В идеале использовать те же шаблоны, что и у меня до сих пор.