ruby-on-rails 什么是Rails中的“资源”?

carvr3hs  于 2023-10-21  发布在  Ruby
关注(0)|答案(7)|浏览(150)

愚蠢的问题,但我有一些挥之不去的困惑,究竟是什么,一个“资源”在Rails中。这个词到处都在使用,但我有一种有趣的感觉,它可能被使用得相当松散。它在模型、控制器和routes.rb中都有引用。
是具体的路线吗?例如,map.resourcesMap了7个RESTful“资源”。所以一个资源的例子是调用,比如说,一个特定类的控制器的index动作?!?
它是对整个页面/对象的引用吗?或者更狭义地说,是一个数据库表?还是那一排被收回了
是不是有别的原因?
不管怎样,希望有人能让我明白...

yi0zb3m4

yi0zb3m41#

您希望用户能够通过URI访问并对其执行CRUD(或其子集)操作的任何对象都可以被视为资源。在Rails的意义上,它 * 通常 * 是一个数据库表,由模型表示,并通过控制器进行操作。
例如,您可能有一个User资源(在数据库中有一个users表)。这由User模型表示,通过map.resources :usersMap到users_controller(然后生成/users(用户资源的集合)和/users/1(特定用户资源)等路由)。
在调用这些资源时,您可以通过使用适当的HTTP方法对这些资源进行操作。POST到资源集合(/users)创建新记录; GET检索资源列表(/users)或特定用户(/users/1)。PUT更新特定用户(/users/1/),DELETE销毁该用户。URL是相同的,但结果(和控制器操作)可能会因HTTP动词而异。/users/1始终表示“我正在与ID为#1的用户交互”,而不管操作如何。

9vw9lbht

9vw9lbht2#

这里有一个good article讨论了大多数开发人员如何认为“Resource”与数据库表同义,我猜,Map到资源就是将控制器Map到该数据库表(或者,使用ActiveResource,Map到另一个REST URL)。
基本上,我认为“资源”是“持久化数据”。map.resources将7个RESTful * 操作 * Map到一组特定的持久化数据。
但我还没有深入思考过。问得好!

qq24tv8q

qq24tv8q3#

我想他们可能是指一般的网络意义上,即Resource (Web)
任何统一资源标识符的引用
我不认为这与数据库表有关。

kqhtkvqz

kqhtkvqz4#

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

gmol1639

gmol16395#

这里很多人说资源指的是你拥有的数据库表。这可能有时是真的,但不一定总是真的。我可以给你给予很多例子,在你的数据库中没有一个特定资源的对应表。因此,将它与table联系起来是相当错误的。
我将资源定义为Map到相关请求的路由。因此,您可以简单地使用资源路由来声明它们,而不是为您想要执行的操作声明单独的路由。在Rails中,资源路由提供了HTTP requestsURLscontroller actions之间的Map。
假设你在config/routes.rb中定义了resources :users
你现在可以在你的应用程序中使用一些辅助程序来控制器,比如edit_user_path,它返回users/edit

eagi6jfj

eagi6jfj6#

这里有一个很好的链接:https://api.rubyonrails.org/v5.2.1/classes/ActionDispatch/Routing/Mapper/Resources.html
基本上就是说:资源路由允许您快速声明给定资源丰富的控制器的所有公共路由。不是为你的索引、显示、新建、编辑、创建、更新和销毁操作声明单独的路由,而是在一行代码中声明它们:
资源:照片

ou6hu8tu

ou6hu8tu7#

在Roy Fielding介绍REST的论文中,他在第5章的 *5.2.1.1资源和资源标识符 * 中明确定义了“资源”。
在Rails的上下文中,入门指南给出了以下定义:
到目前为止,我们已经介绍了CRUD的“R”(读)。我们将最终涵盖“C”(创建),“U”(更新)和“D”(删除)。正如您可能已经猜到的,我们将通过添加新的路由、控制器操作和视图来实现这一点。每当我们有这样一个路由、控制器操作和视图的组合,它们一起工作来对一个实体执行CRUD操作时,我们将该实体称为 * 资源 *。例如,在我们的应用程序中,我们会说一篇文章是一种资源。

相关问题