什么是Rails中的"资源"?

Mel*_*emi 69 ruby-on-rails

愚蠢的问题,但我对Rails中的"资源"究竟是什么感到挥之不去.这个术语在任何地方都可以使用,但我觉得它可能会被松散地使用.它在模型中引用,控制器,以及完全在字面上routes.rb.

这是具体路线吗?例如,map.resources映射7个RESTful"资源".所以一个资源的例子就是调用index特定类控制器的动作?!?

它是对正在检索的整个页面/对象的引用吗?或者,更狭隘的是,数据库表?还是正在检索这一行?

还有别的吗?

无论如何,希望有人可以让我直截了当...

Chr*_*ald 88

您希望用户能够通过URI访问并执行CRUD(或其某些子集)操作的任何对象都可以被视为资源.在Rails意义上,它通常是一个由模型表示的数据库表,并通过控制器进行操作.

例如,您可能拥有一个User资源(users在数据库中有一个表).这是通过一个表示User模型,被映射到users_controllermap.resources :users(其然后产生等路线/users(用户资源的集合)和/users/1(一个特定的用户的资源).

在调用这些资源时,您可以使用适当的HTTP方法对这些资源进行操作.POST到资源集合(/users)创建一个新记录; GET检索资源列表(/users)或特定用户(/users/1).PUT更新特定用户(/users/1/),并DELETE销毁该用户.URL是相同的,但结果(和控制器操作)可能基于HTTP谓词不同.但这个想法/users/1总是意味着"我正在与ID为#1的用户进行交互",无论采取什么行动.

  • @IrfandyJip我不是专家,但我确实知道添加 `resources :users` 确实为您声明了 7 个 REST 路由,您可以使用 `rails paths` 命令自行验证。您能否澄清您的问题,并解释一下您是否想要 `:user` 的其他路线.. (2认同)

Joh*_*tta 7

这是一篇很好的文章,讨论大多数开发人员如何认为"资源"与数据库表是同义的,我猜,这个参数是映射到资源是将控制器映射到该数据库表(或者,使用ActiveResource,映射到另一个REST URL) ).

基本上,我认为"资源"是"持久数据".map.resources将7个RESTful 操作映射到特定的持久数据套件.

但我没有深入考虑过这个问题.好问题!