Logo
Section 1 / 9

订单模型

生成订单模型(Order model),该模型将用于更新订单的总金额计算。

导入

订单模型

生成订单模型(Order model),该模型将用于更新订单的总金额计算。

生成模型

Order 模型同时与用户和产品相关联。

幸运的是,在 Rails 中实现这一点非常简单。复杂之处在于对该对象进行序列化时,我们稍后再详细讨论这个问题。

我们将使用 generate model 命令来生成 Order 模型:

1$ rails generate model order user:belongs_to total:decimal

我们使用 references 方法创建相应的外键,使订单归属于某个用户,同时该命令也会在 Order 模型中自动添加 belongs_to 声明。请在下方终端中运行以下命令来生成模型:

Terminal

与生成 User 模型类似,该命令会生成四个文件,输出结果如下:

1invoke active_record 2 create db/migrate/20210905061529_create_orders.rb 3 create app/models/order.rb 4 invoke test_unit 5 create test/models/order_test.rb 6 create test/fixtures/orders.yml

我们将根据 Order 模型的需求对这些文件逐一进行修改。

执行数据库变更

上述命令将生成 Order 模型。我们使用 references 方法创建外键,以确保订单属于某个用户,同时也在 Order 模型中添加了 belongs_to 声明。

我们不需要在位于 db/migrate 目录下的迁移文件中添加额外的参数约束,因此在生成模型后,通过上方终端执行以下命令,将此次迁移更新到 schema.rb 文件中:

1$ rake db:migrate

执行迁移后将产生如下输出:

1== 20210905062801 CreateOrders: migrating ===================================== 2-- create_table(:orders) 3 -> 0.0182s 4== 20210905062801 CreateOrders: migrated (0.0226s) ============================

添加与 User 模型的关联

与 Product 模型类似,Order 模型与 User 模型之间存在 has_many 关联关系。我们需要在 app/models/user.rb 文件中的 User 模型里添加这一关联。

相关文件已在代码编辑器中更新为新代码。

注意: 点击下方“Run”按钮,对所有 .rb 文件运行语法错误检查。

No configuration found for ID: d3ab55a4546ee9c4150855b8c07af7b428fbf77e7da3382e9c4baa8bae5f4df5

至此,我们已成功生成 Order 模型并将其迁移至数据库。

构建 JSON

验证订单模型