diff options
| author | Alban Peignier | 2018-01-11 09:28:31 +0100 |
|---|---|---|
| committer | Alban Peignier | 2018-01-11 09:31:07 +0100 |
| commit | d858b724c0c966a3896269fa5d52c9b45a4c1926 (patch) | |
| tree | 36ca36ef90567a3b7181da9f06b0e5494503d151 | |
| parent | 69c03982639aceba3d729b201d30c54503227731 (diff) | |
| download | chouette-core-d858b724c0c966a3896269fa5d52c9b45a4c1926.tar.bz2 | |
Use StopArea#raw_objectid to find StopPoints (objectid.to_s can be partial according ObjectId implementation). Refs #5299
| -rw-r--r-- | app/models/concerns/objectid_support.rb | 5 | ||||
| -rw-r--r-- | app/models/merge.rb | 10 |
2 files changed, 12 insertions, 3 deletions
diff --git a/app/models/concerns/objectid_support.rb b/app/models/concerns/objectid_support.rb index cec36678e..5d1f1a1c2 100644 --- a/app/models/concerns/objectid_support.rb +++ b/app/models/concerns/objectid_support.rb @@ -26,5 +26,10 @@ module ObjectidSupport def objectid_class get_objectid.try(:class) end + + def raw_objectid + read_attribute(:objectid) + end + end end diff --git a/app/models/merge.rb b/app/models/merge.rb index d33606a92..27de5f30e 100644 --- a/app/models/merge.rb +++ b/app/models/merge.rb @@ -168,11 +168,11 @@ class Merge < ActiveRecord::Base # JourneyPatterns referential_journey_patterns, referential_journey_patterns_stop_areas_objectids = referential.switch do - journey_patterns = referential.journey_patterns.includes(:stop_points) + journey_patterns = referential.journey_patterns.includes(stop_points: :stop_area) journey_patterns_stop_areas_objectids = Hash[ journey_patterns.map do |journey_pattern| - [ journey_pattern.id, journey_pattern.stop_points.map(&:stop_area).map(&:objectid)] + [ journey_pattern.id, journey_pattern.stop_points.map(&:stop_area).map(&:raw_objectid)] end ] @@ -206,11 +206,15 @@ class Merge < ActiveRecord::Base stop_areas_objectids = referential_journey_patterns_stop_areas_objectids[journey_pattern.id] stop_points = existing_associated_route.stop_points.joins(:stop_area).where("stop_areas.objectid": stop_areas_objectids).order(:position) + if stop_points.count != stop_areas_objectids.count + raise "Can't find StopPoints for #{stop_areas_objectids} : #{stop_points.inspect} #{existing_associated_route.stop_points.inspect}" + end + attributes.merge!(stop_points: stop_points) new_journey_pattern = new.journey_patterns.create! attributes if new_journey_pattern.checksum != journey_pattern.checksum - raise "Checksum has changed: #{journey_pattern.checksum_source} #{new_journey_pattern.checksum_source}" + raise "Checksum has changed for #{journey_pattern.inspect}: #{journey_pattern.checksum_source} #{new_journey_pattern.checksum_source} " end end end |
