导入
生成用户模型
生成应用程序的用户模型。
在上一章中,我们完成了应用程序端点配置的基本框架。
在接下来的章节中,我们将通过认证令牌实现用户身份验证,并设置权限来限制访问,例如仅允许已登录用户进行操作。
在后续章节中,我们会将商品与用户关联,并赋予用户下单的能力。
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.rbapp/models/user.rbtest/models/user_test.rbtest/fixtures/users.yml
注意:迁移文件名开头的日期表示该文件的创建时间,因此你本地生成的文件日期可能与此不同。