我有两个模型 - 用户和活动 - 通过使用UserActivity模型与has_many相关:用户可以“想要”或“完成”一个活动,这会创建一个UserActivity记录并设置适当的布尔值。
在创建路径和控制器操作时,您建议处理这些操作?像activity /:id / want和activity /:id / done这样的东西最有意义,因此在activity资源下有2条成员路由吗?或者在user_activity控制器中使用更新/创建操作更有意义,发布创建的/ user_activity,并将/ user_activity /:id更新?
答案 0 :(得分: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)原则应该非常相似。