У меня есть модель Scouts, для которой требуются два действия в дополнение к стандартным действиям REST, check_in и check_out. Так что у меня есть свой маршрут как:Лучший способ справиться с этим RESTfully
resources :scouts do
member do
get 'check_in'
get 'check_out'
end
end
Но мне нужно, чтобы отобразить show.html пользователя, со ссылкой на check_in разведчика или check_out разведчик. Чтобы использовать одно и то же представление show.html и сохранить только одно действие show в ScoutsController, я передаю ?mode=check_in
или ?mode=check_out
, добавленный к URL-адресу, чтобы обозначить это не обычное действие шоу и, таким образом, отображать ссылки «Check In» и «Check Out» ,
Я думал о создании ресурса check_in
и check_out
, но это не похоже на модель REST, так как проверка входа/выхода - это действие, а не ресурс.
Есть ли лучший способ справиться с этим RESTfully?
Обновление: Режим происходит от разных пользователей с различными Agendas (т.е. рабочих процессов). Одному пользователю может потребоваться показать и отредактировать данные Scout, в то время как другой будет выполнять только действия check_in
.
Но пользователю, который выполняет check_in
действия, возможно, потребуется отредактировать. Например, пользователь, выполняющий действия check_in
, может обнаружить ошибку в данных Scout, исправить ее путем редактирования и вернуться к своему действию check_in
. Передача mode
позволяет мне определить повестку дня пользователей. Кроме того, добавление mode
позволяет мне использовать только один просмотр/редактирование/etc view и просто отображать на нем соответствующие ссылки.
Я мог бы поставить режим в сеанс хэш. В любом случае, тот же результат.
Преимущество - очень простой пользовательский интерфейс (для очень простых пользователей).
Мне кажется, что Scout - это ресурс и check_in
и check_out
- это действия. Но использование режима кажется неудобным. Но, возможно, это лучший способ. Это мой вопрос.
Как вы узнаете, должна ли отображаться ссылка check_in или check_out? Это поле в скаутской модели? Или это связано с текущей сессией пользователя? Можете ли вы более подробно объяснить, что скаут, check_in и check_out представляют в терминах объектов реального мира? – johnmcaliley
Есть пользователи с ролью "check_in". Это лицо является регистратором. В настоящее время у меня есть CheckInController с только действием индекса, который позволяет пользователю искать и находить скаутов для check_in. Модель Scout имеет флаг 'checked_in'. Ничего из этого не имеет ничего общего с сеансом пользователей. HTH – Karl