diff --git a/app/controllers/gardens_controller.rb b/app/controllers/gardens_controller.rb index edc82cd84..8eb5608a6 100644 --- a/app/controllers/gardens_controller.rb +++ b/app/controllers/gardens_controller.rb @@ -78,7 +78,7 @@ class GardensController < ApplicationController @garden.destroy respond_to do |format| - format.html { redirect_to gardens_url } + format.html { redirect_to @garden.owner, notice: 'Garden was successfully deleted.' } format.json { head :no_content } end end diff --git a/app/models/garden.rb b/app/models/garden.rb index 8edbbda0b..d8ed4056d 100644 --- a/app/models/garden.rb +++ b/app/models/garden.rb @@ -4,7 +4,7 @@ class Garden < ActiveRecord::Base attr_accessible :name, :slug, :owner_id, :description belongs_to :owner, :class_name => 'Member', :foreign_key => 'owner_id' - has_many :plantings, :order => 'created_at DESC' + has_many :plantings, :order => 'created_at DESC', :dependent => :destroy has_many :crops, :through => :plantings default_scope order("lower(name) asc") diff --git a/app/views/gardens/show.html.haml b/app/views/gardens/show.html.haml index 302035063..d5319d492 100644 --- a/app/views/gardens/show.html.haml +++ b/app/views/gardens/show.html.haml @@ -13,19 +13,24 @@ - else = link_to "#{othergarden}", garden_path(othergarden) - - if can? :edit, @garden - = link_to 'Edit', edit_garden_path(@garden), :class => 'btn' - = link_to 'New', new_garden_path, :class => 'btn' + - if can? :create, @garden + = link_to 'New Garden', new_garden_path, :class => 'btn btn-mini' .span9 %div :markdown #{@garden.description} - - if can? :edit, @garden - %p= link_to "Plant something", new_planting_path(:garden_id => @garden.id), :class => 'btn btn-large btn-primary' + = link_to 'Edit Garden', edit_garden_path(@garden), :class => 'btn btn-mini' + - if can? :destroy, @garden + = link_to 'Delete Garden', @garden, method: :delete, | + data: { confirm: 'All plantings associated with this garden will also be deleted. Are you sure?' }, :class => 'btn btn-mini' + + %h3 + What's planted here? + - if can? :edit, @garden + = link_to "Plant something", new_planting_path(:garden_id => @garden.id), :class => 'btn btn-primary' - %h3 What's planted here? - @garden.plantings.each do |p| = render :partial => "plantings/thumbnail", :locals => { :planting => p } diff --git a/spec/controllers/gardens_controller_spec.rb b/spec/controllers/gardens_controller_spec.rb index 569f856f6..d96bc2baf 100644 --- a/spec/controllers/gardens_controller_spec.rb +++ b/spec/controllers/gardens_controller_spec.rb @@ -131,7 +131,7 @@ describe GardensController do it "redirects to the gardens list" do garden = Garden.create! valid_attributes delete :destroy, {:id => garden.to_param} - response.should redirect_to(gardens_url) + response.should redirect_to(garden.owner) end end diff --git a/spec/models/garden_spec.rb b/spec/models/garden_spec.rb index 2527ea7f9..1523c504b 100644 --- a/spec/models/garden_spec.rb +++ b/spec/models/garden_spec.rb @@ -71,4 +71,14 @@ describe Garden do end end + it "destroys plantings when deleted" do + @garden = FactoryGirl.create(:garden, :owner => @owner) + @planting1 = FactoryGirl.create(:planting, :garden => @garden) + @planting2 = FactoryGirl.create(:planting, :garden => @garden) + @garden.plantings.length.should == 2 + all = Planting.count + @garden.destroy + Planting.count.should == all - 2 + end + end