<commit_before>class CartsController < ApplicationController
  before_action :set_cart, only: [:show, :edit, :update, :destroy]
  # выдаем исключение если кто то пытается зайти в несуществующую корзину в строке браузера
  rescue_from ActiveRecord::RecordNotFound, with: :invalid_cart

  # GET /carts
  # GET /carts.json
  def index
    @carts = Cart.all
  end

  # GET /carts/1
  # GET /carts/1.json
  def show
  end

  # GET /carts/new
  def new
    @cart = Cart.new
  end

  # GET /carts/1/edit
  def edit
  end

  # POST /carts
  # POST /carts.json
  def create
    @cart = Cart.new(cart_params)

    respond_to do |format|
      if @cart.save
        format.html { redirect_to @cart, notice: 'Cart was successfully created.' }
        format.json { render :show, status: :created, location: @cart }
      else
        format.html { render :new }
        format.json { render json: @cart.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /carts/1
  # PATCH/PUT /carts/1.json
  def update
    respond_to do |format|
      if @cart.update(cart_params)
        format.html { redirect_to @cart, notice: 'Cart was successfully updated.' }
        format.json { render :show, status: :ok, location: @cart }
      else
        format.html { render :edit }
        format.json { render json: @cart.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /carts/1
  # DELETE /carts/1.json
  def destroy
    # удалить корзину если ее id совпадает с id корзины в сессии
    # чтобы не удалиласть корзина другого пользователя
    @cart.destroy if @cart.id == session[:cart_id]
    session[:cart_id] = nil
    respond_to do |format|
      format.html { redirect_to root_path, notice: 'Ваша корзина заказа очищена' }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_cart
      @cart = Cart.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def cart_params
      params.fetch(:cart, {})
    end

    # выдаем исключение при неправильно указанной корзине с блюдами
    def invalid_cart
      logger.error "Попытка доступа к несуществующей корзине заказа #{params[:id]}"
      redirect_to root_path, alert: 'Некорректно указано меню предзаказа'
    end
end<commit_msg>solved problems with cart:destroy<commit_after>class CartsController < ApplicationController
  before_action :set_cart, only: [:show, :edit, :update, :destroy]
  # выдаем исключение если кто то пытается зайти в несуществующую корзину в строке браузера
  rescue_from ActiveRecord::RecordNotFound, with: :invalid_cart

  # GET /carts
  # GET /carts.json
  def index
    @carts = Cart.all
  end

  # GET /carts/1
  # GET /carts/1.json
  def show
  end

  # GET /carts/new
  def new
    @cart = Cart.new
  end

  # GET /carts/1/edit
  def edit
  end

  # POST /carts
  # POST /carts.json
  def create
    @cart = Cart.new(cart_params)

    respond_to do |format|
      if @cart.save
        format.html { redirect_to @cart, notice: 'Cart was successfully created.' }
        format.json { render :show, status: :created, location: @cart }
      else
        format.html { render :new }
        format.json { render json: @cart.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /carts/1
  # PATCH/PUT /carts/1.json
  def update
    respond_to do |format|
      if @cart.update(cart_params)
        format.html { redirect_to @cart, notice: 'Cart was successfully updated.' }
        format.json { render :show, status: :ok, location: @cart }
      else
        format.html { render :edit }
        format.json { render json: @cart.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /carts/1
  # DELETE /carts/1.json
  def destroy
    # удалить корзину если ее id совпадает с id корзины в сессии
    # чтобы не удалиласть корзина другого пользователя
    @cart.destroy if @cart.user_id == current_user.id
    session[:cart_id] = nil
    respond_to do |format|
      format.html { redirect_to root_path, notice: 'Ваша корзина заказа очищена' }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_cart
      @cart = Cart.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def cart_params
      params.fetch(:cart, {})
    end

    # выдаем исключение при неправильно указанной корзине с блюдами
    def invalid_cart
      logger.error "Попытка доступа к несуществующей корзине заказа #{params[:id]}"
      redirect_to root_path, alert: 'Некорректно указано меню предзаказа'
    end
end
{'fraction_non_alphanumeric': 0.08740306015510375, 'fraction_numerical': 0.002934395304967512, 'mean_word_length': 2.7486252945797327, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4104904', 'n_tokens_mistral': 1632, 'n_tokens_neox': 1693, 'n_words': 482}