Logo
Section 1 / 12

生成产品模型

为应用程序生成 Product 模型。

导入

生成产品模型

为应用程序生成 Product 模型。

我们现在有了 User 模型的简单实现,但关键的时刻到了。我们将自定义 JSON 输出,并添加第二个资源:用户的产品。
这些产品是用户将在应用中出售的商品,且与用户直接关联。

如果你熟悉 Rails,可能已经对此有所了解。对于不熟悉的人来说,我们将使用 Active Record 提供的 has_many 和 belongs_to 方法,将 User 模型与 Product 模型关联起来。

在本章中,我们将完成以下操作:

  • 从零开始构建 Product 模型。
  • 将其与用户进行关联。
  • 创建必要的数据条目,以便任何客户都能访问相关信息。

我们首先创建一个 Product 模型,然后添加一些验证规则,最后将其与 User 模型建立关联。和用户模型一样,产品模型也会经过完整的测试,并在所属用户被删除时自动删除。

Product 模型需要包含以下几个字段:

  • title:用于定义产品的名称。
  • price:表示产品的价格,类型为十进制数字。
  • published:布尔值,表示该产品是否已准备好上架销售。
  • user_id:用于将特定产品关联到某个用户。

如你所料,我们将通过 rails generate 命令来生成这些内容:

1$ rails generate model Product title:string price:decimal published:boolean user:belongs_to

请在下方终端中执行此命令以生成模型:

Terminal

输出结果应类似于以下内容:

1Running via Spring preloader in process 28 2 invoke active_record 3 create db/migrate/20210831082610_create_products.rb 4 create app/models/product.rb 5 invoke test_unit 6 create test/models/product_test.rb 7 create test/fixtures/products.yml

该命令共生成了四个文件:

1db/migrate/20210831082610_create_products.rb 2app/models/product.rb 3test/models/product_test.rb 4test/fixtures/products.yml

注意:迁移文件名开头的时间戳(位于 db/migrate 目录下)对应的是实际创建时间,因此你的文件时间会有所不同。

接下来,我们将根据需求逐一查看并修改这些文件。

注意:我们在属性 user 上使用了 belongs_to 类型。这是一种快捷写法,它会自动创建一个类型为 int 的 user_id 字段,并添加一个指向 users.id 的外键约束。同时,user_id 字段还会被设置为索引。这在关联字段中是一种良好的实践,因为它能优化数据库查询性能。虽然不是强制要求,但强烈推荐这样做。

用户认证

迁移文件