2010-09-08 2 views
2

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

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

ответ

0

Я бы воспользовался последним подходом, то есть разрешил 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 должны быть очень похожими.

Смежные вопросы