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 total_amount order_items.sum { |item| item.order_item_amount } 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

Ruby on Rails 订单模型 - 生成订单号、计算总金额及库存管理

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

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