愚蠢的问题,但是我对Rails中的“资源”到底是什么一直挥之不去。这个术语在任何地方都可以使用,但是我感到很有趣,它可能使用得相当宽松。它在模型,控制器以及(实际上是)中引用routes.rb
。
这是特定路线吗?例如,map.resources
映射7个RESTful“资源”。因此,一个资源的示例就是调用index
特定类的控制器的动作?!?
它是对要检索的整个页面/对象的引用吗?或者更狭义地讲是数据库表?还是行被撤退?
还有吗
无论如何,希望有人能使我挺直...
Answers:
您希望用户能够通过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的用户进行交互”,但无论采取何种措施。
resources
来为数据库中没有的资源定义路由!如果您不需要默认情况下路由到的所有控制器操作,只需使用only:
并except:
告诉它您实际上想要的是哪个。例如,resources :things, only: [:index, :show]
...
resources :users
inconfig/routes.rb
吗?
resources :users
确实为您声明了7条REST路由,您可以使用rails routes
命令自己进行验证。你能澄清你的问题,虽然,如果你想为其他途径解释:user
..
打开模型文件夹,这提示您拥有哪些资源!例如:用户,图片,评论...
concerns/
并application_record.rb
继续app/models/
(我正在执行步骤5)。而且我不知道为什么会有帮助。
这里很多人说资源是指您拥有的数据库表。有时可能是正确的,但不一定总是正确。我可以举很多例子,说明您的数据库中没有针对特定资源的对应表。因此,将其与表相关联是相当错误的。
我将资源定义为映射到相关请求的路由。因此,而不是宣布采取的行动不同的途径,你想干什么,你可以使用一个足智多谋的route.In Rails的简单声明它们,一个足智多谋的路由提供之间的映射HTTP requests
,并URLs
给controller actions
。
因此,说您resources :users
在中定义config/routes.rb
。
现在,您可以对应用程序中的控制器使用许多辅助方法,例如edit_user_path
return users/edit
。
这是一个很好的链接:https : //api.rubyonrails.org/v5.2.1/classes/ActionDispatch/Routing/Mapper/Resources.html
基本上可以这样说:资源路由允许您快速声明给定资源控制器的所有通用路由。足智多谋的路由无需为索引,显示,新建,编辑,创建,更新和销毁操作声明单独的路由,而是在一行代码中声明它们:
资源:照片