rails是什么
- 大致理解为为了方便前端开发,然后就会有人封装了一些框架,例如vue,而rails 就是 ruby的一个框架,方便开发者用ruby进行开发。
Rails中数据在MVC框架中的传递
image.png数据在MVC框架中的传递如上图所示。上图的执行步骤为:
1.浏览器发送HTTP request请求给rails服务器;
2.路由(Routing)根据规则决定送往哪一个Controller的Action中进行处理;
3.负责处理请求的controller通过action操作model;
4.model访问数据库并对数据进行操作;
5.controller将读取到的数据资料渲染给view模板;
6.回传最终的HTML页面给浏览器
rails 命名约定
- 数据库表名:复数,下划线分隔单词(例如 book_clubs)
- 模型类名:单数,每个单词的首字母大写(例如 BookClub)
rails命令行记录
-
_ #看上一次打印了什么
-
rails new 项目名称 #生成一个项目
-
bin/rails server #启动一个项目
-
bin/rails generate controller Welcome index # 生成器创建一个包含“index”动作的“Welcome”控制器:
-
bin/rails generate model 开头大写模型的名称 #生成一个model
-
rails db:migrate #迁移 生成一个数据表
-
bin/rails c #开启调试
-
模型名.all #看到表所有数据
-
模型名.first #看到表的第一条数据
-
模型名.new #表的数据结构
-
模型名.find() #找到表对应的id的那条数据
-
模型名.find_by(健名:'内容') #找到对应字段并且内容相同的数据
-
Active Record
- 中文翻译: 活动记录
- Active Record 是 MVC 中的 M(模型),负责处理数据和业务逻辑。Active Record 负责创建和使用需要持久存入数据库中的数据。Active Record 实现了 Active Record 模式,是一种对象关系映射系统。
创建Active Record 模型
rails中创建一个活动记录很简单
class Product < ApplicationRecord
end
-
创建一个继承ApplicationRecord类的类,而ApplicationRecord
继承 ActiveRecord::Base,后者定义了一系列有用的方法。 -
使用 ActiveRecord::Base.table_name= 方法可以指定要使用的表名:
暂时看不懂
CRUD
- 什么是CRUD,国人常说的增删改查,英文就是create,reade,update,delete。
- C 表示创建,R 表示读取,U 表示更新,D 表示删除
首先:
bin/rails generate model Test //后面可以加字段,也可以不加字段。
// 如果不定义字段 可以找到db文件夹的migrate 对应的迁移自己进行增加字段
- rails会自动为你创建一个models,和 一张迁移(migrate)。
rails db:migrate //迁移(暂时理解为生成一张对应的据表)
- 在rubymine自带的终端 开启调试 bin/rails c 输入:
创建
# 直接创建一条数据在对应的表中,并且保存
模型名.create(字段名: '...',...)
# new 方法实例化一个新对象,但不保存:
# 例子:
user = User.new
user.name = "David"
user.occupation = "Code Artist"
# user.save 调用save就可以保存到数据库了
读取
# 返回所有用户组成的集合
users = User.all
# 返回第一个用户
user = User.first
# 返回第一个名为 David 的用户
david = User.find_by(name: 'David')
更新
# 简单的更新
user = User.find_by(name: 'David')
user.name = 'Dave'
user.save
# 用update方法
user = User.find_by(name: 'David')
user.update(name: 'Dave')
# user = User.find_by(name: 'David')
user.update(name: 'Dave')
# 批量修改
User.update_all "name = 'cwh'"
删除
user = User.find_by(name: 'David')
user.destroy
网友评论