Rails уничтожить действие не удаляет - PullRequest
1 голос
/ 15 мая 2019

Я хочу добавить сервисные объекты в мой контроллер.Однако действие уничтожения, похоже, не работает должным образом - в основном оно ничего не удаляет, просто перенаправляет на страницу без флеш-сообщения.

user_stock_destroyer.rb

class UserStocksDestroyer
  def initialize(current_user, params, flash)
    @current_user = current_user
    @params = params[:id]
    @flash = flash
  end

  def call
    stock = Stock.find(params)
    @user_stock = UserStock.where(user_id: current_user.id, stock_id: stock.id).first
    @user_stock.destroy!
    flash[:notice] = 'Stock successfully removed'
  end

  private

  attr_reader :current_user, :params, :flash
end

user_stocks_controller.rb

class UserStocksController < ApplicationController
  def destroy
    UserStocksDestroyer.new(current_user, params, flash)
    redirect_to my_portfolio_path
  end
end

1 Ответ

5 голосов
/ 15 мая 2019

Вы создаете объект, но не вызываете call, метод, который выполняет работу

def destroy
  UserStocksDestroyer.new(current_user, params, flash).call
  redirect_to my_portfolio_path
end
...