aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/merge.rb16
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