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