簡體   English   中英

如何清除Rails中的數據庫列

[英]How to clear database columns in Rails

我有一個Cart

class Cart < ActiveRecord::Base
  belongs_to :user
  has_many :items, :dependent => :destroy
end

在結帳時,我想從購物車中刪除給定user所有items 我該如何實現?

結帳控制器如下所示:

  def create
    @order = Order.new(order_params)
    @order.user_id = session[:user_id]
    @cart = Cart.find(session[:cart])

    respond_to do |format|
      if @order.save
        OrderNotifier.received(@order,@cart).deliver
        format.html { redirect_to :controller => :orders, :action => :index }
        format.json { render action: 'show', status: :created, location: @order }
      else
        format.html { render action: 'new' }
        format.json { render json: @order.errors, status: :unprocessable_entity }
      end
    end
  end

注意:我不想放下Cart並重新創建它,只需從項目中清除它即可。

您可以通過清除items關聯來清除items

@cart.items.clear

http://guides.rubyonrails.org/association_basics.html#has-many-association-reference中所述

我認為您的購物車模型不一定需要與數據庫鏈接,您可以將所有內容都放在會話中。

您的模型Cart.rb

class Cart
   attr_reader :items # and more attributes if necessary

   include ActiveModel::Validations

   def initialize
       @items = [] # you will store everything in this array
   end

   # methods here like add, remove, etc...
end

您的物品:

class CartItem
  attr_reader :product # and attributes like quantity to avoid duplicate item in your cart

  def initialize(product)
    @product = product

  end

  # methods here
end

在您的控制器中:

class CartController < ApplicationController

  def find_or_initialize_cart
    session[:cart] ||= Cart.new
  end


  def empty
    session[:cart] = nil
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM