From 5dc26b70870f34650b9d9df18e5447a379b67d10 Mon Sep 17 00:00:00 2001 From: Xinhui Date: Fri, 30 Jun 2017 14:28:34 +0200 Subject: Fix cleanup#destroy_time_tables should only destroy vehicle_journey of deleted time_tables Refs #3917 --- app/models/clean_up.rb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'app/models') diff --git a/app/models/clean_up.rb b/app/models/clean_up.rb index e39928a17..cbcde72f5 100644 --- a/app/models/clean_up.rb +++ b/app/models/clean_up.rb @@ -16,10 +16,13 @@ class CleanUp < ActiveRecord::Base def clean {}.tap do |result| - result['time_table'] = send("destroy_time_tables_#{self.date_type}").try(:count) + processed = send("destroy_time_tables_#{self.date_type}") + if processed + result['time_table'] = processed[:time_tables].try(:count) + result['vehicle_journey'] = processed[:vehicle_journeys].try(:count) + end result['time_table_date'] = send("destroy_time_tables_dates_#{self.date_type}").try(:count) result['time_table_period'] = send("destroy_time_tables_periods_#{self.date_type}").try(:count) - result['vehicle_journey'] = destroy_vehicle_journey_without_time_table.try(:count) self.overlapping_periods.each do |period| exclude_dates_in_overlapping_period(period) end @@ -106,13 +109,16 @@ class CleanUp < ActiveRecord::Base end def destroy_time_tables(time_tables) + results = { :time_tables => [], :vehicle_journeys => [] } # Delete vehicle_journey time_table association time_tables.each do |time_table| time_table.vehicle_journeys.each do |vj| vj.time_tables.delete(time_table) + results[:vehicle_journeys] << vj.destroy if vj.time_tables.empty? end end - time_tables.destroy_all + results[:time_tables] = time_tables.destroy_all + results end aasm column: :status do -- cgit v1.2.3