From af2d0e22ee15301a3c17e39f6ee26e2fcf9dc36f Mon Sep 17 00:00:00 2001 From: Skud Date: Sat, 30 Aug 2014 10:51:33 +1000 Subject: [PATCH] Automatically set plantings to finished when a garden is marked inactive --- app/models/garden.rb | 12 ++++++++++++ app/views/gardens/show.html.haml | 4 +++- spec/models/garden_spec.rb | 18 ++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/app/models/garden.rb b/app/models/garden.rb index cece4dfab..7f64994cc 100644 --- a/app/models/garden.rb +++ b/app/models/garden.rb @@ -14,6 +14,7 @@ class Garden < ActiveRecord::Base geocoded_by :location after_validation :geocode after_validation :empty_unwanted_geocodes + after_save :mark_inactive_garden_plantings_as_finished default_scope order("lower(name) asc") scope :active, where(:active => true) @@ -74,4 +75,15 @@ class Garden < ActiveRecord::Base name end + # When you mark a garden as inactive, all the plantings in it should be + # marked as finished. This automates that. + def mark_inactive_garden_plantings_as_finished + if (active == false) + plantings.current.each do |p| + p.finished = true + p.save + end + end + end + end diff --git a/app/views/gardens/show.html.haml b/app/views/gardens/show.html.haml index b1e5f42da..a0630d3a8 100644 --- a/app/views/gardens/show.html.haml +++ b/app/views/gardens/show.html.haml @@ -8,7 +8,9 @@ - if can? :edit, @garden - if @garden.active = link_to "Plant something", new_planting_path(:garden_id => @garden.id), :class => 'btn btn-primary' - = link_to "Mark as inactive", garden_path(@garden, :garden => {:active => 0}), :method => :put, :class => 'btn btn-default' + = link_to "Mark as inactive", garden_path(@garden, :garden => {:active => 0}), | + :method => :put, :class => 'btn btn-default', | + data: { confirm: 'All plantings associated with this garden will be marked as finished. Are you sure?' } - else = link_to "Mark as active", garden_path(@garden, :garden => {:active => 1}), :method => :put, :class => 'btn btn-default' = link_to 'Edit garden', edit_garden_path(@garden), :class => 'btn btn-default' diff --git a/spec/models/garden_spec.rb b/spec/models/garden_spec.rb index 43319daa6..e3a2e3690 100644 --- a/spec/models/garden_spec.rb +++ b/spec/models/garden_spec.rb @@ -165,4 +165,22 @@ describe Garden do end end + it "marks plantings as finished when garden is inactive" do + garden = FactoryGirl.create(:garden) + p1 = FactoryGirl.create(:planting, :garden => garden) + p2 = FactoryGirl.create(:planting, :garden => garden) + + p1.finished.should eq false + p2.finished.should eq false + + garden.active = false + garden.save + + p1.reload + p1.finished.should eq true + p2.reload + p2.finished.should eq true + + end + end