Rails:如何通过关联RESTful查询模型?

Ste*_*son 7 rest ruby-on-rails

我没有使用Ruby on Rails获得REST,我希望有人可以帮助我.

想象一下,我正在构建一个跟踪窗口小部件和拥有这些窗口小部件的用户的网站.所以我有一个UsersController和一个WidgetsController,我可以获得一个包含索引操作的Widgets或Users列表:

GET /users
GET /widgets
Run Code Online (Sandbox Code Playgroud)

我可以通过show动作获得特定的用户或小部件:

GET /users/id
GET /widgets/id
Run Code Online (Sandbox Code Playgroud)

我明白了.

我感到困惑的是,我将使用RESTful请求来检索属于特定用户的小部件列表?这是一个发送到UsersController或WidgetsController的请求吗?它使用了7种RESTful操作中的哪一种?

是我创建自定义操作的情况之一吗?我的印象是自定义操作应该很少见,但这似乎是一个非常常见的用例.

谢谢!

wom*_*ton 5

属于用户的小部件列表的 urlfoo如下所示:

/users/foo/widgets
Run Code Online (Sandbox Code Playgroud)

然后,您可以选择如何为每个小部件设置 URL。这个有可能:

/users/foo/widgets/bar
Run Code Online (Sandbox Code Playgroud)

但我更喜欢这个:

/widgets/bar
Run Code Online (Sandbox Code Playgroud)

您的路线如下所示:

map.resources :users, :has_many => :widgets, :shallow => true
map.resources :widgets, :has_many => :users, :shallow => true
Run Code Online (Sandbox Code Playgroud)

(这是凭记忆,我可能搞砸了一个或多个细节)

控制器方法手柄/user/foo/widgetsindex的作用WidgetController。它测试user_id参数的存在并限制基于该参数返回的小部件。(或检索foo用户并设置@widgets@user.widgets。)

更新:有一个很好的嵌套路由概述,可以回答我在Rails 指南中的原始问题。

更新 2哦,是的,我也打算链接到一些文档