Ruby on Rails Tutorial 第二章

2.玩具应用

第二章,作者通过脚手架(scaffold generator) 快速地构建了一个应用,并围绕该应用谈论了关于数据模型模型资源、 MVC 架构REST 架构的相关知识.

数据模型 & 模型资源

数据模型(data model) 用于表示应用所需的结构,例如:在一个微博类的网站中,包含两个数据模型: Micropost 和 User.

模型资源(resource) 是数据模型与网页页面的结合,可以通过 HTTP 命令来实现对模型的操作.这一思想与 REST 架构方式有关.

MVC 架构 & REST 架构

Rails 的整体的架构是 MVC 架构,(MVC 是 model-view-controller 的缩写)其架构图如下:

当用户看到一个界面的时候,整体的流程如下:

  1. 用户在浏览器中点击一个链接,浏览器向 Router 发送一个 HTTP 请求
  2. Router 识别这个请求对应的 Controller action(控制器动作)
  3. Controller 执行该动作,然后与 Model 交互,请求得到相应的数据
  4. Model 与数据库交互,取出相应的数据,将其递交给 Controller
  5. Controller 将数据发给 View,使其产生具有特定数据的 HTML 页面
  6. View 返回对应的 HTML 界面给 Controller 
  7. Controller 发送给浏览器
  8. 浏览器渲染该界面,用户看到该界面

Controller 有很多动作与特定的 route 相匹配.
其中, Controller 中有四个动作: CRUD(create, read, update, destroy) 一般不直接渲染页面.
其主要的任务是更改数据库中的数据,这与 HTTP 协议中的 GET, POST, PATCH, DELETE 一一对应,这样的架构称为 REST ( Representational State Transfer) 架构.

以下表为例:

其中以红框表示的是能够对用户的数据库中的数据进行改变的,另外的几个动作则是渲染新的页面.
也就是说:控制器动作具有两个功能 :

  1. 第一个功能是渲染新的页面
  2. 第二个功能是根据用户的 HTTP 请求和 URL 来改变数据库中的数据.(REST 架构)

继承体系

Rails 中的 model 与 controller 有一定的继承体系,
对于 model 来说(以 Micropost 为例):
Micropost 继承自 ApplicationRecord, 又继承自 ActiveRecord::Base
其功能有:

  1. 使模型对象与数据库通信
  2. 将数据库中的咧看作为 Ruby 中的属性

对于 controller 来说(以 UsersController) 为例):
UsersController 继承自 ApplicationController ,又继承自 ActionController:Base
其功能有:

  1. 使控制器具有处理模型对象的能力
  2. 过滤入站 HTTP 请求的能力
  3. 把视图渲染成 HTML 的能力
原文地址:https://www.cnblogs.com/FBsharl/p/11396029.html