Должен ли я перебирать бизнес-объекты из Views в приложении MVC? - PullRequest
0 голосов
/ 10 апреля 2009

Мне интересно, сколько доступа к данным я должен сделать в View при использовании MVC Framework. Например: в моем приложении есть страница, которая показывает список всех моих любимых исполнителей и, для каждого исполнителя, список всех песен этого исполнителя. Вопрос в том, должен ли я передавать только список исполнителей в представление или все данные (исполнитель + песни)?

Ps: я использую Ruby On Rails и ActiveRecord.

Ответы [ 2 ]

3 голосов
/ 11 апреля 2009

Не извлекайте данные БД в представлениях - это работа контроллера. По вашему мнению, вы должны ссылаться только на данные, загруженные вашим методом контроллера.

В вашем случае это означает создание списка исполнителей с использованием :include, чтобы песни были предварительно загружены.

# In your controller
@artists = Artist.find(:all, :include => :songs)

РЕДАКТИРОВАТЬ В ответ на комментарий метода есть две проблемы с извлечением данных из представлений:

  • Разделение интересов. Это то, о чем я говорил, когда говорил, что вы «должны» извлекать данные только из контроллера - в MVC контроллер обрабатывает доступ к данным, и, теоретически, представления не содержат логики. Конечно, иногда проще получать данные из ваших представлений, но это выглядит довольно быстро.
  • Эффективность, как по количеству запросов, так и по размеру результата запроса, о чем, я думаю, и говорил метод. Если вы загружаете достаточно данных на одной странице, чтобы это стало проблемой, мне интересно, не предполагает ли это какой-либо рефакторинг (или хотя бы разбиение на страницы).
2 голосов
/ 10 апреля 2009

Предполагая, что класс модели для Artist имеет возможность предоставить коллекцию песен, я не вижу причин требовать, чтобы контроллер явно передавал оба вида.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...