gpt4 book ai didi

ruby-on-rails - 如何在多个 Rails 模型上执行计算,逻辑应该放在哪里?

转载 作者:行者123 更新时间:2023-12-04 03:06:45 26 4
gpt4 key购买 nike

我在 Rails 应用程序中有一个发票模型。发票有很多产品和服务(两个独立的模型)。发票显示 View ​​显示这些关联的记录。

产品和服务都具有相似的结构,即项目、价格、数量。我可以将行总计计算为 price * quantity 并且可以将 Products 的总价计算为 all.collect { |product| product.price * product.quantity ,与服务相同。

如果我现在想计算这张发票上产品 + 服务的总成本怎么办?

如何跨多个模型执行计算?计算逻辑应该放在哪里?

我意识到一种解决方案是将产品和服务合并到一个模型中,但这不是一个选项。

我不知道从哪里开始,非常感谢一些指向有用文档的指示、想法或链接。

最佳答案

只是为了检查:

  • 发票有_很多产品和服务
  • 产品有一个 total_cost 方法(或 total_price)
  • 服务也有一个 total_cost 方法

并且您在询问将发票的产品和服务总价的逻辑放在哪里。正确吗?

在那种情况下,将其放入发票中是正确的:

def total_cost_of_products
products.collect { |product| product.price * product.quantity }
end

def total_cost_of_services
services.collect { |services| service.price * service.quantity }
end

def total_price_of_products_and_services
total_cost_of_products + total_cost_of_services
end

当然,您可以进一步研究它,并且您可能希望对您的发票模型进行一些单元测试。查看 lucapette 的答案,了解重构和干燥它的好方法

关于ruby-on-rails - 如何在多个 Rails 模型上执行计算,逻辑应该放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9531204/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com