【问题标题】:Creating an 'order' model made up of 'products' and 'quantities' [rails]创建一个由“产品”和“数量”组成的“订单”模型 [rails]
【发布时间】:2018-08-17 10:34:54
【问题描述】:

我有一个非常笼统的具体问题。

我想创建一个名为“订单”的数据库实体,它由“产品”和产品数量组成。我想我已经完成了前几个步骤:

首先我将创建订单和产品模型

rails g model product
rails g model order
rails g migration createJoinTableProductOrder product order 
rails db:migrate 

如何使用以下内容为数据库播种:

  1. 与许多产品相关的订单
  2. 每个订单中每个产品的数量信息

种子应该是这样的:

Product A 
Product B

Order 1 has 3 of Product A and 2 of Product B
Order 2 has 1 of Product A and 1 of Product B

任何帮助将不胜感激!

【问题讨论】:

  • 你想播种什么需要更多解释。
  • 添加了一些伪代码:)
  • 问题中没有伪代码。这更像是你想要的输出。
  • 你有什么问题?
  • 我的问题是如何创建种子,如伪代码所示:)

标签: ruby-on-rails database


【解决方案1】:

让我举例说明

class Product
  has_and_belongs_to_many :orders
end

class Order
 has_and_belongs_to_many :products
end

创建订单和产品

order_1 = Order.create(:name => "Order1")
products_a = 3.each{|i| Product.create(name: "Product_A_#{i}")  }
products_b = 2.each{|i| Product.create(name: "Product_B_#{i}")  }
order_1.products << products_a
order_1.products << products_b

现在订单 2 重复步骤

order_2 = Order.create(:name => "Order2")
product_a = Product.create(name: "Product_a")
product_b = Product.create(name: "Product_b") 
order_2.products << products_a
order_2.products << products_b

将自动填充第三个表 Products_orders。如果您需要更多解释,请告诉我。只需在种子中写下相同的内容即可。您可以添加进一步的检查是产品或用户已经退出等。

谢谢

【讨论】:

  • 这很有道理,谢谢!再问一个问题,每个订单了解其包含的每种产品数量的最佳方法是什么?我正在考虑在新列中使用一个对象,例如:数量:“{ #{product_A.id}: 12, #{product_B.id}: 4}”
  • @timothyylim 你可以在 Product 表中使用 type category 然后你可以像 @order.products.where(:product_type => 'A').count @order.products.where(: product_type => 'B').count
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-27
  • 1970-01-01
  • 2019-04-05
  • 2014-09-30
  • 1970-01-01
  • 2019-12-09
  • 1970-01-01
相关资源
最近更新 更多