什么是 Rails 中的“资源”?

这是一个愚蠢的问题,但我对 Rails 中的“资源”到底是什么还有一些挥之不去的困惑。这个词到处都在使用,但我有一种奇怪的感觉,它可能被使用得相当松散。它在模型、控制器以及字面上的 routes.rb中都有引用。

是特定的路线吗?例如,map.resources映射7个 RESTful“资源”。因此,资源的一个例子就是对某个特定类的控制器的 index操作的调用?

它是否引用了正在检索的整个页面/对象?或者更狭义地说,是一个数据库表?还是正在检索的行?

还有别的事吗?

不管怎样,希望有人能让我明白。

35237 次浏览

这里有一个 文章不错讨论了大多数开发人员如何认为“ Resource”与数据库表是同义的,我猜想,其论点是,映射到资源就是将控制器映射到该数据库表(或者,使用 ActiveResource,将控制器映射到另一个 REST URL)。

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

但是我还没有深入地思考过这个问题,问得好!

我认为他们可能指的是一般意义上的网络,也就是 资源(网页):

任何统一资源标志符的参照物

我不认为它与数据库表有任何关系。

您希望用户能够通过 URI 访问并在其上执行 讨厌(或其中的一些子集)操作的任何对象都可以被视为资源。在 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的用户进行交互”,与操作无关。

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

这里的很多人说,资源指的是您拥有的数据库表。有时可能是对的,但不一定总是对的。我可以给出很多例子,在这些例子中,您的数据库中没有针对特定资源的对应表。因此,将它与表关联是相当错误的。

我将资源定义为映射到相关请求的路由。因此,不需要为您想要执行的操作声明单独的路由,您只需要使用一个资源路由来声明它们。

假设你在 config/routes.rb中定义了 resources :users。< br/> 您现在可以在应用程序中对控制器使用许多帮助器,比如返回 users/editedit_user_path

这里有一个很好的链接: https://api.rubyonrails.org/v5.2.1/classes/ActionDispatch/Routing/Mapper/Resources.html

基本上就是说: 资源路由允许您快速声明给定资源控制器的所有公共路由。与为索引、 show、 new、 edit、 create、 update 和 delete 操作声明单独的路由不同,一个足智多谋的路由在一行代码中声明它们:

资源: 照片