愚蠢的问题,但我对于什么,确切地说,"资源"有一些挥之不去的混淆。在Rails中。这个术语在任何地方都可以使用,但我觉得它可能会被松散地使用。它在模型,控制器和routes.rb
中完全引用。
是特定路线吗?例如,map.resources
映射7个RESTful"资源"。因此,一个一个资源的示例是调用特定类控制器的index
动作?!
它是对正在检索的整个页面/对象的引用吗?或者,更狭隘的是,数据库表?或正在检索的行?
还有别的吗?
无论如何,希望有人可以让我直截了当......
答案 0 :(得分:85)
您希望用户能够通过URI访问并执行CRUD(或其某些子集)操作的任何对象都可以被视为资源。在Rails意义上,它通常是数据库表,由模型表示,并通过控制器进行操作。
例如,您可能拥有User
资源(数据库中有users
表)。这由User
模型表示,使用users_controller
映射到map.resources :users
(然后生成/users
(用户资源的集合)和/users/1
等路由(特定的用户资源)。
在调用这些资源时,您可以使用适当的HTTP方法对这些资源进行操作。 POST
到资源集合(/users
)创建一个新记录; GET
检索资源列表(/users
)或特定用户(/users/1
)。 PUT
更新特定用户(/users/1/
),DELETE
销毁该用户。 URL是相同的,但结果(和控制器操作)可能基于HTTP谓词不同。但是,这个想法是/users/1
始终意味着“我正在与ID为#1的用户进行交互”,无论采取什么行动。
答案 1 :(得分:7)
这是一个good article讨论大多数开发人员如何认为“资源”与数据库表是同义的,我猜,参数映射到资源是将控制器映射到该数据库表(或者, ActiveResource,到另一个REST URL)。
基本上,我认为“资源”是“持久数据”。 map.resources
将7个RESTful 操作映射到特定的持久数据集。
但我没有深入考虑过这个问题。好问题!
答案 2 :(得分:3)
打开您的模型文件夹,这是您拥有的资源的暗示! 例如:用户,图片,评论......
答案 3 :(得分:2)
答案 4 :(得分:1)
以下是一个很好的链接:https://api.rubyonrails.org/v5.2.1/classes/ActionDispatch/Routing/Mapper/Resources.html
基本上是这样说的:资源路由允许您快速声明给定资源控制器的所有通用路由。足智多谋的路由无需为索引,显示,新建,编辑,创建,更新和销毁操作声明单独的路由,而是在一行代码中声明它们:
资源:照片
答案 5 :(得分:0)
这里很多人说资源是指您拥有的数据库表。有时可能是正确的,但不一定总是正确的。我可以举很多例子,说明您的数据库中没有针对特定资源的对应表。因此,将其与表相关联是相当错误的。
我将资源定义为映射到相关请求的路由。因此,无需为要执行的操作声明单独的路由,只需使用资源丰富的路由即可声明它们。在Rails中,资源丰富的路由提供了HTTP requests
和URLs
到controller actions
之间的映射。
因此,假设您在resources :users
中定义了config/routes.rb
。
现在,您可以对应用程序中的控制器使用许多助手,例如edit_user_path
,它返回users/edit