持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第26天,点击查看活动详情
八、Rails 项目数据库配置文件 database.yml
Rails 项目的数据库配置文件为 database.yml,在项目的 config 目录下。database.yml 采用 yml 格式来存放数据库的访问信息,并且支持运行时配置的概念,这也是 Rails 约定优于配置的体现。
database.yml 中每一个环境都有自己的一组配置,可以在不同的环境中运行同一个应用程序,切换运行环境可以无须修改代码。
YML/YAML 文件和 XML 文件类似,都可以存储序列化数据,但是 YMAL 跟适合动态编程语言中使用的数据类型进行编码。
在使用 rails new 生成新的项目时,默认使用的是 SQLite3 数据库,如果使用其他的数据库可以添加 -d 参数来指定数据库。
database.yml 中配置了三个环境,分别是开发环境 development、测试环境 test、生产环境 production。每个配置环境都是以环境名字为开头,后面紧跟冒号,并且 Rails 已经默认配置好了基本的数据库连接信息,只需根据实际情况修改即可。
配置文件中各个项的含义如下:
- adapter:使用数据库连接适配器,默认是 sqlite3
- database:需要连接的数据库名称
- pool:数据库连接池的数量,默认是 5
- timeout:连接超时时间默认是 5000 ms
在使用 rails new 生成新的项目时,增加 -d=mysql 参数,指定使用 MySQL 数据库,项目的 config/database.yml 如下:
这里的配置项比 sqlite3 要多处不少,多出的项的含义如下:
- encoding:数据库所采用的的字符集编码,默认为 utf-8
- reconnect:是否允许重新连接
- username:连接数据库的用户名
- password:数据库的密码
- host:数据库的 URL 地址
这里给出的都是默认信息,项目创建完成后也可以根据实际情况修改。
需要注意的是配置连接信息时要严格遵循 YML 文件的格式,在冒号后面跟一个空格,之后在填写具体的 Value。
九、Scaffold 代码生成器
Rails 框架提供了一个代码生成器 scaffold,使用 scaffold 代码生成器可以生成 Rails 应用程序的基本架构,包括基本的新建、列表显示、更新和删除操作。
只需要通过 rails generate scaffold 或者 rails g scaffold 后面紧跟一些参数即可生成基本增删改查的代码。
rails generate scaffold [模型类名称] [模型类的字段1:字段类型] [模型类的字段2:字段类型] [模型类的字段3:字段类型] ...
scaffold 代码生成器需要提供模型类的名称以及字段名和字段类型,这里的模型类就是项目中的实体类也就是 ORM 中的 对象。在生成基本的增删改查代码后可以通过数据库迁移命令生成对应的数据库表
以基于 MySQL 数据的 blog 项目为例,使用代码生成器创建 Article 模型类的增删改查,该模型类包含了 id、name、title、content 几个字段。
需要注意的是运行 scaffold 命令时的参数中无须填写 id 字段和类型,--force 可以覆盖已存在的代码。代码生成器运行完成后运行migrate命令 rails db:migrate 时会自动创建表和id字段、以及创建和更新字段。
启动项目,浏览器进入 /articles
点击 New Article 按钮,进入添加界面
输入内容,点击 Create Article 按钮,会跳转到成功页面,并显示添加的数据
点击 back, 返回 articles 页面,可以看出刚刚创建的数据已经被展示出来
还可以对该数据进行 Show 查看、Edit 编辑 和 Destroy 删除。