Как мне организовать контроллер (ы) для модели с разными взглядами на одно и то же действие? - PullRequest
0 голосов
/ 14 января 2011

У меня есть модель User, которая, на мой взгляд, имеет два действия показа:

  • «Показ», выполняемый над собственной записью пользователя (для просмотра его личного профиля)
  • «Показ» выполнял другие записи пользователей (для просмотра их общедоступного профиля)

Я думал о нескольких различных способах, которыми я мог бы организовать и реализовать эту функцию, но я 'Мне любопытно, что такое «Rails Way» для этого.

URL-адреса должны быть разными (domain.com/account vs. domain.com/profile/someuser), что, естественно, приводит меня к желанию иметьнесколько представлений для представления различных точек зрения этого действия.

Первый вариант - создать два контроллера с разными действиями show и view для обслуживания запросов.

Второй вариант - поместить оба действия в один контроллер с именами действий, которые по сути являются дубликатами.(или принудительные недубликаты, такие как 'show' против 'show_public').

Вариант три будет состоять в использовании одного контроллера и одного действия, которое обрабатывает каждый запрос условно на основе некоторого уникального бита данных:маршрут, с которого он был вызван, заполняется ли параметр params [: id] и т. д.

Что такое «путь Rails» для этого?

1 Ответ

1 голос
/ 14 января 2011

По умолчанию routes, controller метод и view для любого пользователя, здесь ничего особенного.

Для current_user:

  • выберите камень аутентификации (например,authlogic) с функцией current_user
  • добавить route, например, /me
  • в пользовательском контроллере, определить новый метод, например: me (аналогично show), который всегдаиспользуйте current_user для получения @ user
  • нового me.html.erb представления для отображения информации о текущем пользователе

Надеюсь, это поможет

...