2011-01-14 132 views
61

愚蠢的问题,但我对Rails中的一个“资源”是什么,有一些混淆。这个词在任何地方都可以使用,但是我觉得它有可能被松散地使用。它在模型,控制器中,以及在字面上,在routes.rb中被引用。什么是Rails中的“资源”?

它是具体的路线吗?例如,map.resources映射了7个RESTful“资源”。所以一个资源的例子就是调用某个类的控制器的index动作?!?

这是对整个页面/对象的检索吗?或者更狭隘的说是一个数据库表?或该行被撤回?

是别的吗?

不管怎样,希望有人可以设置我直...

回答

80

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

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

您作用在这些资源。这些资源在拨打电话时的HTTP方法POST的资源集合(/users)创建一个新的记录; GET获取资源的(/users)的列表或特定用户(/users/1PUT更新特定用户(/users/1/),和DELETE。销毁该用户。URL是相同的,但结果(和控制器操作)根据HTTP动词可能会有所不同。这个想法虽然是/users/1总是意味着“我与具有ID#1的用户进行交互”,无论采取什么行动。

+0

如果我有一个资源不使用数据库模型(它使用单独服务的API进行持久化)是否仍然有意义使用rails“resource”快捷方式还是我最好手动定义路线? – Jonah 2018-01-12 03:44:42

7

这里有一个good article讨论大多数开发商认为如何“资源”是同义与数据库表,参数,我想,在于映射资源将控制器映射到该数据库表(或者使用ActiveResource映射到另一个REST URL)。

基本上,我认为“资源”是“持久数据”。 map.resources将7个RESTful 动作映射到一组特定的持久数据。

但我还没有深入的想过它。好问题!

3

我想他们大概的意思是在一般意义上的网络,即Resource (Web)

任何统一资源标识符的指涉

我不认为这有什么用数据库表。

3

打开你的模型文件夹,这是你有什么资源的提示! 例如:用户,图片,评论...