RESTful маршруты для has_many: через отношения? - PullRequest
2 голосов
/ 08 сентября 2010

У меня есть 2 модели - User и Activity - которые связаны has_many: через модель UserActivity.Пользователь может либо «хотеть», либо «выполнять» действие, которое создает запись UserActivity и устанавливает соответствующее логическое значение.

Что бы вы порекомендовали для обработки этих действий при создании маршрутов и действий контроллера?Будет ли что-то вроде action /: id / want и Activity /: id / done иметь больше смысла и, таким образом, иметь 2 маршрута для участников под ресурсом активности?Или более разумно использовать действия update / create в контроллере user_activity с отправкой в ​​/ user_activity для создания и помещением в / user_activity /: id для обновления?

1 Ответ

0 голосов
/ 08 сентября 2010

Я бы пошел с последним подходом, то есть, разрешив POST / PUT доступ к "user_activity".В мире REST это рассматривается как новый ресурс, даже если он просто формирует связь между ресурсами «пользователя» и «деятельности».

Одна мысль, которая приходит в голову, - это отделить «хочу» или «сделано»виды деятельности в качестве нового ресурса (например, «статус»).Идея чиста, как и даже без нее, но если есть шанс, что вам придется расширить список до чего-то, что находится выше «хотите» или «сделано» (например, «когда-нибудь / возможно»), это может быть прощечтобы определить его как новый ресурс скорее сейчас, чем позже.

Таким образом, у вас будет:

  • пользовательский ресурс: /user и /user/id
  • ресурс активности: /activity и /activity/id
  • ресурс состояния: /status и /status/id
  • ресурс, который формирует отношения между пользователем, действием и ресурсом: /user-activity и /user-activity/id

В зависимости от вашего дизайна URI вы можете работать с доступными URI, которые позволят вам получить все действия для пользователя, которые находятся в определенном состоянии, например: /user-activity/user/{userId}/status/{statusId}


Обратите внимание: Я не могу давать советы по специфике Ruby-on-Rails (поскольку я из мира PHP), но я думаю, что принципы (REST) ​​должны быть очень похожи.

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