diff options
| -rw-r--r-- | app/models/merge.rb | 16 | 
1 files changed, 6 insertions, 10 deletions
| diff --git a/app/models/merge.rb b/app/models/merge.rb index 69749d105..be1bbedcb 100644 --- a/app/models/merge.rb +++ b/app/models/merge.rb @@ -136,8 +136,8 @@ class Merge < ApplicationModel      referential_stop_points_by_route = referential_stop_points.group_by(&:route_id)      referential_routing_constraint_zones = referential.switch do -      referential.routing_constraint_zones.each_with_object(Hash.new { |h,k| h[k] = [] }) do |routing_constraint_zone, hash| -        hash[routing_constraint_zone.route_id] << routing_constraint_zone +      referential.routing_constraint_zones.each_with_object(Hash.new { |h,k| h[k] = {}}) do |routing_constraint_zone, hash| +        hash[routing_constraint_zone.route_id][routing_constraint_zone.checksum] = routing_constraint_zone        end      end @@ -183,7 +183,7 @@ class Merge < ApplicationModel            # RoutingConstraintZones            routing_constraint_zones = referential_routing_constraint_zones[route.id] -          routing_constraint_zones.each do |routing_constraint_zone| +          routing_constraint_zones.values.each do |routing_constraint_zone|              objectid = new.routing_constraint_zones.where(objectid: routing_constraint_zone.objectid).exists? ? nil : routing_constraint_zone.objectid              stop_point_ids = routing_constraint_zone.stop_point_ids.map { |id| stop_point_ids_mapping[id] }.compact @@ -207,12 +207,12 @@ class Merge < ApplicationModel              raise "Checksum has changed: \"#{route.checksum}\", \"#{route.checksum_source}\" -> \"#{new_route.checksum}\", \"#{new_route.checksum_source}\""            end -          if new_route.routing_constraint_zones.map(&:checksum).sort != routing_constraint_zones.map(&:checksum).sort +          if new_route.routing_constraint_zones.map(&:checksum).sort != routing_constraint_zones.keys.sort              raise "Checksum has changed in RoutingConstraintZones: \"#{new_route.routing_constraint_zones.map(&:checksum).sort}\" -> \"#{route.routing_constraint_zones.map(&:checksum).sort}\""            end            new_route.routing_constraint_zones.each do |new_routing_constraint_zone| -            routing_constraint_zone = routing_constraint_zones.find { |c| c.checksum == new_routing_constraint_zone.checksum } +            routing_constraint_zone = routing_constraint_zones[new_routing_constraint_zone.checksum]              if routing_constraint_zone                referential_routing_constraint_zones_new_ids[routing_constraint_zone.id] = new_routing_constraint_zone.id              else @@ -366,11 +366,7 @@ class Merge < ApplicationModel            end            # Rewrite ignored_routing_contraint_zone_ids - -          new_vehicle_journey.ignored_routing_contraint_zone_ids = vehicle_journey.ignored_routing_contraint_zone_ids.map do |id| -            referential_routing_constraint_zones_new_ids[id] -          end.compact - +          new_vehicle_journey.ignored_routing_contraint_zone_ids = referential_routing_constraint_zones_new_ids.values_at(*vehicle_journey.ignored_routing_contraint_zone_ids).compact            new_vehicle_journey.save!            if new_vehicle_journey.checksum != vehicle_journey.checksum | 
