导入
生成产品模型
为应用程序生成 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字段还会被设置为索引。这在关联字段中是一种良好的实践,因为它能优化数据库查询性能。虽然不是强制要求,但强烈推荐这样做。