From 3d7c361fe54b4989e0e9ad495fe621454596fcee Mon Sep 17 00:00:00 2001 From: maebeale Date: Wed, 31 Oct 2018 00:28:08 -0400 Subject: [PATCH 1/2] Add destroy action so delete button works --- app/controllers/projects_controller.rb | 12 +++++++++++- app/models/project.rb | 6 +++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 041f151..cc55245 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class ProjectsController < ApplicationController - before_action :load_project, only: %i[show edit update] + before_action :load_project, only: %i[show edit update destroy] def index @projects = Project.all @@ -41,6 +41,16 @@ def update end end + def destroy + if @project.destroy! + flash[:notice] = 'Project deleted' + redirect_to projects_path + else + flash.now[:alert] = @project.errors.full_messages + redirect_to projects_path + end + end + private def load_project diff --git a/app/models/project.rb b/app/models/project.rb index 47f97ae..abb45ca 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -1,9 +1,9 @@ # frozen_string_literal: true class Project < ApplicationRecord - has_many :targets - has_many :tasks - has_and_belongs_to_many :users + has_many :targets, dependent: :destroy + has_many :tasks, dependent: :destroy + has_and_belongs_to_many :users, dependent: :destroy validates :name, presence: true end From ad8aa8c5d10cdd99cd49bec140f77a1967b77921 Mon Sep 17 00:00:00 2001 From: maebeale Date: Wed, 31 Oct 2018 00:32:28 -0400 Subject: [PATCH 2/2] Add test for delete link --- spec/features/project_management_spec.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/spec/features/project_management_spec.rb b/spec/features/project_management_spec.rb index 9c0c239..e72a629 100644 --- a/spec/features/project_management_spec.rb +++ b/spec/features/project_management_spec.rb @@ -36,4 +36,11 @@ expect(page).to have_text('NEW PROJECT') end + + it 'User can delete a project' do + visit projects_path + click_link 'Delete' + + expect(page.find('.alert-notice')).to have_content 'Project deleted' + end end