0
我正在使用rails的商店。由於我是Rails的新手,我正在關注如何創建購物車和訂購系統的一些教程。如何在每個會話上保持相同的順序?
所以,現在訂單中帶有唯一標識符的訂單正在由用戶自動創建並保存,每次新建會話時都會向訂單中添加一個order_item。這是問題。
我想要訂單持續到30天過去(首先創建的一個訂單,即用戶添加第一個order_item時)。問題在於:因此,如果用戶添加order_items,他創建一個訂單,然後註銷並返回,並將新的order_item添加到他的購物車中,即使已將舊訂單保存到數據庫中,也會創建新訂單。我想檢索第一個訂單。
你能告訴我如何做到這一點嗎?
class OrderItemsController < ApplicationController
def create
@order = current_order
@order_item = @order.order_items.new(order_item_params)
@order.user_id = current_user.id
@order.save
session[:order_id] = @order.id
respond_to do |format|
format.js { flash[:notice] = "ORDER ITEM HAS BEEN ADDED." }
end
end
order_item.rb
class OrderItem < ActiveRecord::Base
belongs_to :product
belongs_to :order
validates_associated :order
validates :quantity, presence: true, numericality: { only_integer: true, greater_than: 0 }
validate :product_present
validate :order_present
before_save :finalize
def unit_price
if persisted?
self[:unit_price]
else
product.price
end
end
def total_price
unit_price * quantity
end
private
def product_present
if product.nil?
errors.add(:product, "is not valid or is not active.")
end
end
def order_present
if order.nil?
errors.add(:order, "is not a valid order.")
end
end
def finalize
self[:unit_price] = unit_price
self[:total_price] = quantity * self[:unit_price]
end
end
order.rb
class Order < ActiveRecord::Base
belongs_to :order_status
belongs_to :user
has_many :order_items
validates_length_of :order_items, maximum: 3
before_create :set_order_status
before_save :update_subtotal
def subtotal
order_items.collect { |oi| oi.valid? ? (oi.quantity * oi.unit_price) : 0 }.sum
end
private
def set_order_status
self.order_status_id = 1
end
def update_subtotal
self[:subtotal] = subtotal
end
end
user.rb
has_many :order
它在application_controller.rb定義,它看起來是這樣的:是helper_method:current_order'高清current_order 如果會話![:ORDER_ID] .nil? Order.find(會話[:ORDER_ID]) 其他 Order.new 結束 end' –
好吧,我不知道在哪裏'會話[:ORDER_ID]'是從哪裏來的,但也許你想要將其更改爲'Order.find(session [:order_id])|| Order.find_by_user_id(current_user.id)'。你自己寫了這些代碼嗎?你知道如何編程嗎? – jrochkind
不,我不是自己寫的,它是從這個教程:https://richonrails.com/articles/building-a-shopping-cart-in-ruby-on-rails –