2

我有 2 个模型 - User 和 Activity - 由 has_many 关联:通过使用 UserActivity 模型。用户可以“想要”或“完成”一个活动,这会创建一个 UserActivity 记录并设置适当的布尔值。

在创建路由和控制器操作时,您会建议如何处理这些操作?像 activity/:id/want 和 activity/:id/done 这样的东西是否最有意义,因此在活动资源下有 2 个成员路由?还是只使用 user_activity 控制器中的更新/创建操作更有意义,发布到 /user_activity 进行创建,然后放入 /user_activity/:id 进行更新?

4

1 回答 1

1

我会采用后一种方法,即允许 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)原则应该非常相似。

于 2010-09-08T15:48:33.087 回答