diff options
Diffstat (limited to 'app/models')
| -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 |
