app/models/order.rb class Order < ApplicationRecord belongs_to :user has_many :order_items before_create :generate_order_no

def generate_order_no prefix = Time.now.strftime('%Y%m%d%H%M%S') 10.times do self.no = "#{prefix}#{format('%06d', Random.rand(999999))}" return self.no unless Order.exists?(no: self.no) end Rails.logger.warn('find order no failed') false end

def create_line_items(items) items.each do |data| sku = ProductSku.find(data[:sku_id]) item = order_items.create!( amount: data[:amount].to_i, price: sku.price.to_i, product: sku.product, product_sku: sku ) total_amount += sku.price.to_i * data[:amount].to_i sku.with_lock do sku.stock -= data[:amount].to_i sku.save end end end end
app/models/order_item.rb class OrderItem < ApplicationRecord belongs_to :product belongs_to :product_sku belongs_to :order

def order_item_amount # amount? product_sku.price.to_i * amount.to_i end

end 可以在 order_items.rb 里面的order_item_amount方法怎么写比较好内容:在order_item.rb文件的order_item_amount方法中,可以将逻辑简化为直接返回amount和product_sku.price的乘积,如下所示:

def order_item_amount
  amount.to_i * product_sku.price.to_i
end

这样就可以直接计算出订单项的金额。

Ruby on Rails 订单模型和订单项模型代码示例 - 订单金额计算优化

原文地址: https://www.cveoy.top/t/topic/p9Im 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录