如何使用Ruby on Rails冻结特定对象?
- 内容介绍
- 文章标签
- 相关推荐
本文共计487个文字,预计阅读时间需要2分钟。
在Rails中,可以使用` associations :order_items`方法来关联订单对象和订单项对象。你遇到的问题是,你有一个订单模型,它包含多个订单项,而这些订单项又属于不同的产品或服务。在支付订单时,你需要关联订单与购买的商品的详细信息。
你可以通过以下方式实现:
ruby在订单模型中class Order
在订单项模型中class OrderItem
这样,当你访问`order.products`时,Rails会自动处理通过`order_items`关联的产品列表。在支付订单时,你可以通过以下方式获取订单的商品详情:
rubyorder=Order.find(params[:id])product_details=order.products.map do |product| { name: product.name, price: product.price, quantity: order.order_items.find_by(product: product).quantity }end
这将返回一个包含产品名称、价格和数量的数组。
有没有人知道Rails中可以冻结关联对象的任何方法.我遇到的问题是我有一个包含许多订单项的订单模型,而这些订单项又属于某个产品或服务.支付订单时,我需要冻结订购商品的详细信息,以便在价格更改时保留订单的总计. 之前我在网上购买系统.你想要做的是有一个Order类和一个LineItem类. LineItems存储产品详细信息,如价格,数量,以及您需要保留记录的其他一些信息.它更复杂,但这是我知道锁定细节的唯一方法.订单只是由LineItems组成,可能包含送货地址和帐单地址.可以通过将LineItem相加来计算订单的总价.
基本上,您在人员购买之前冻结数据.将它们添加到订单后,数据将被冻结,因为LineItems会复制nessacary产品信息.这样,当从系统中删除产品时,您仍然可以理解旧订单.
您可能希望查看rails插件调用’AASM'(以前充当状态机)来处理订单状态.
编辑:AASM可以在github.com/rubyist/aasm/tree/master找到
本文共计487个文字,预计阅读时间需要2分钟。
在Rails中,可以使用` associations :order_items`方法来关联订单对象和订单项对象。你遇到的问题是,你有一个订单模型,它包含多个订单项,而这些订单项又属于不同的产品或服务。在支付订单时,你需要关联订单与购买的商品的详细信息。
你可以通过以下方式实现:
ruby在订单模型中class Order
在订单项模型中class OrderItem
这样,当你访问`order.products`时,Rails会自动处理通过`order_items`关联的产品列表。在支付订单时,你可以通过以下方式获取订单的商品详情:
rubyorder=Order.find(params[:id])product_details=order.products.map do |product| { name: product.name, price: product.price, quantity: order.order_items.find_by(product: product).quantity }end
这将返回一个包含产品名称、价格和数量的数组。
有没有人知道Rails中可以冻结关联对象的任何方法.我遇到的问题是我有一个包含许多订单项的订单模型,而这些订单项又属于某个产品或服务.支付订单时,我需要冻结订购商品的详细信息,以便在价格更改时保留订单的总计. 之前我在网上购买系统.你想要做的是有一个Order类和一个LineItem类. LineItems存储产品详细信息,如价格,数量,以及您需要保留记录的其他一些信息.它更复杂,但这是我知道锁定细节的唯一方法.订单只是由LineItems组成,可能包含送货地址和帐单地址.可以通过将LineItem相加来计算订单的总价.
基本上,您在人员购买之前冻结数据.将它们添加到订单后,数据将被冻结,因为LineItems会复制nessacary产品信息.这样,当从系统中删除产品时,您仍然可以理解旧订单.
您可能希望查看rails插件调用’AASM'(以前充当状态机)来处理订单状态.
编辑:AASM可以在github.com/rubyist/aasm/tree/master找到

