Logo
Section 1 / 12

生成用户模型

生成应用程序的用户模型。

导入

生成用户模型

生成应用程序的用户模型。

在上一章中,我们完成了应用程序端点配置的基本框架。

在接下来的章节中,我们将通过认证令牌实现用户身份验证,并设置权限来限制访问,例如仅允许已登录用户进行操作。

在后续章节中,我们会将商品与用户关联,并赋予用户下单的能力。

Rails 有多种认证解决方案可供选择,包括 AuthLogic、Clearance 和 Devise。这些是开箱即用的库,可以帮助我们管理身份验证、密码重置、数据验证等功能。不过,在本项目中我们将使用 bcrypt gem 来对用户密码进行哈希处理。

注意:本章内容较长,涵盖多个主题。建议你在开始前准备好咖啡、适当伸展放松。到本章结束时,我们将完成全部用户逻辑、数据验证以及错误处理机制。

User 模型

模型 是一个 Ruby 类,用于表示数据。模型包含数据本身及其相关逻辑,例如验证、读取和存储等操作。我们将从生成 User 模型开始。该模型结构简单,仅包含两个字段:

  • email 字段:必须唯一。
  • password_digest 字段:用于存储经过哈希处理后的密码(本章稍后会详细介绍密码哈希相关内容)。
...
The User model

生成模型

我们将使用 Ruby on Rails 提供的 generate model 命令来创建 User 模型。

该命令的一般语法为:

1$ rails generate model ModelName ColumnOneName:ColumnOneType ColumnTwoName:ColumnTwoType

在我们的场景中,ColumnOneName 是类型为 string 的 email 字段,ColumnTwoName 是类型也为 string 的 password_digest 字段。因此,具体命令如下:

1$ rails generate model User email:string password_digest:string

现在,请运行以下命令来创建 User 模型。

Terminal

执行 rails generate model 命令后,系统生成了四个文件。我们将逐一查看这些文件,并根据需要进行修改。这些文件分别是:

  • db/migrate/20210812224113_create_users.rb
  • app/models/user.rb
  • test/models/user_test.rb
  • test/fixtures/users.yml

注意:迁移文件名开头的日期表示该文件的创建时间,因此你本地生成的文件日期可能与此不同。

API

迁移文件