订单模型
生成订单模型(Order model),该模型将用于更新订单的总金额计算。
生成模型
Order 模型同时与用户和产品相关联。
幸运的是,在 Rails 中实现这一点非常简单。复杂之处在于对该对象进行序列化时,我们稍后再详细讨论这个问题。
我们将使用 generate model 命令来生成 Order 模型:
1$ rails generate model order user:belongs_to total:decimal
我们使用 references 方法创建相应的外键,使订单归属于某个用户,同时该命令也会在 Order 模型中自动添加 belongs_to 声明。请在下方终端中运行以下命令来生成模型:
与生成 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 模型并将其迁移至数据库。