如何在Rails 4中显示购物车上每种产品的材料价格总和?

我用一个基本的购物车在轨道4中制作了一个网络应用程序,它显示了产品名称,数量和价格,并且这是我的问题。价格来自其材料成本,而且由于产品可以有许多材料和材料可用于许多产品,因此我制作了一张名为product_cost的表格。我没有计算价格的领域,因为材料价格随时可能变化,因此产品价格也会变化,所以我认为它不会有生产力。如何在Rails 4中显示购物车上每种产品的材料价格总和?

回到购物车,我需要显示它上面的每个产品的价格,并为此计算该产品上使用的所有材料的成本。

继承人的结构的简单表示:

Material Table 

Name

Unit cost

Product Cost Table

Product ID

Material ID

Quantity of material

Product Table

Name

Description

我如何处理这个情况呢?

回答:

显然,这是一个many-to-many关系,所以我希望你的模型(材料,ProductCost,产品)与has_many_through实现,我选择has_many_through方式,因为你将能够做这样的事情

p = Product.find(1) 

product_cost_records = p.product_cost # retrieve array of active-records of the bridge table between product and material

product_cost_records.map do |record|

record.material.unit * record.quantity # (record.material) gets Material record associated to this bridge record

end.reduce(:+) # map will put the multiplication of (quantity * Unit) into an array then reduce will sum them up

我知道它似乎会执行很多查询,但这是我得到的最快的解决方案,请注意,我没有在模板应用程序上尝试上面的代码,或者我只是猜测应用程序中的关系,希望这可以帮助您。

以上是 如何在Rails 4中显示购物车上每种产品的材料价格总和? 的全部内容, 来源链接: utcz.com/qa/265282.html

回到顶部