X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/136c5a7bf1e850d188a86cfe65ace4c4c457fcb8..dc2a95903722644f6109244cec9a2d1e195fef0e:/app/models/relation.rb diff --git a/app/models/relation.rb b/app/models/relation.rb index db4dd52a6..81f178997 100644 --- a/app/models/relation.rb +++ b/app/models/relation.rb @@ -320,4 +320,22 @@ class Relation < ActiveRecord::Base def tags_as_hash return self.tags end + + ## + # if any members are referenced by placeholder IDs (i.e: negative) then + # this calling this method will fix them using the map from placeholders + # to IDs +id_map+. + def fix_placeholders!(id_map) + self.members.map! do |type, id, role| + old_id = id.to_i + if old_id < 0 + new_id = id_map[type.to_sym][old_id] + raise "invalid placeholder" if new_id.nil? + [type, new_id, role] + else + [type, id, role] + end + end + end + end