Ruby on Rails 订单模型和订单项模型代码示例 - 订单金额计算优化
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
这样就可以直接计算出订单项的金额。
原文地址: https://www.cveoy.top/t/topic/p9Im 著作权归作者所有。请勿转载和采集!