在Rails中深度嵌套的RESTful资源

时间:2008-12-18 22:46:42

标签: ruby-on-rails rest

我的应用程序中有这个结构:

USER has_one:publicprofile,:privateprofile

PUBLICPROFILE有很多:电子邮件,:phonenumbers

PRIVATEPROFILE有很多:地址,:信用卡

我想知道如何为用户提供一个配置文件页面,我可以在其中更新其嵌套资源(并以RESTful方式执行)。我找不到关于这个主题的任何文档/示例(因为混淆了has_one关系)。

3 个答案:

答案 0 :(得分:4)

我认为任何比1级更深的嵌套通常都是不受欢迎的,通常可以避免。贾米斯巴克blogged about it一会儿回来。

PeepCode REST for Rails 2 screencast也非常好,但它并没有广泛用于嵌套,只是一般的资源。

答案 1 :(得分:4)

在routes.rb文件中,您可以使用块将您的配置文件添加为用户的嵌套资源:

map.resources :users do |user|
  user.resources :privateprofile
  user.resources :publicprofile
end

然后,您可以使用以下网址访问您的个人资料:

users/1/publicprofiles
users/1/publicprofiles/new
users/1/publicprofiles/1/edit

您可以在终端中运行rake路由,以获取更新路由文件后可用的所有嵌套URL的列表。

要获得真正深入的解释,请参阅此帖子:http://adam.blog.heroku.com/past/2007/12/20/nested_resources_in_rails_2/

答案 2 :(得分:2)

我建议您观看此截屏视频:http://railscasts.com/episodes/139-nested-resources

它确实帮助我理解了在Rails中使用嵌套路由和资源的真正可能性(特别是Rails 2.2中的新变化)。

但是,我必须在这里同意Ryan Bates,小心使用嵌套资源。