set_table_name 'current_nodes'
- validates_presence_of :changeset_id, :timestamp
- validates_inclusion_of :visible, :in => [ true, false ]
- validates_numericality_of :latitude, :longitude
- validate :validate_position
-
belongs_to :changeset
has_many :old_nodes, :foreign_key => :id
has_many :containing_relation_members, :class_name => "RelationMember", :as => :member
has_many :containing_relations, :class_name => "Relation", :through => :containing_relation_members, :source => :relation, :extend => ObjectFinder
+ validates_presence_of :id, :on => :update
+ validates_presence_of :timestamp,:version, :changeset_id
+ validates_uniqueness_of :id
+ validates_inclusion_of :visible, :in => [ true, false ]
+ validates_numericality_of :latitude, :longitude, :changeset_id, :version, :integer_only => true
+ validates_numericality_of :id, :on => :update, :integer_only => true
+ validate :validate_position
+ validates_associated :changeset
+
# Sanity check the latitude and longitude and add an error if it's broken
def validate_position
errors.add_to_base("Node is not in the world") unless in_world?
# version must be present unless creating
return nil unless create or not pt['version'].nil?
- node.version = pt['version'].to_i
+ node.version = create ? 0 : pt['version'].to_i
unless create
if pt['id'] != '0'
old_node.timestamp = t
old_node.save_with_dependencies!
+ # tell the changeset we updated one element only
+ changeset.add_changes! 1
+
# save the changeset in case of bounding box updates
changeset.save!
end
user_display_name_cache[self.changeset.user_id] = nil
end
- el1['user'] = user_display_name_cache[self.changeset.user_id] unless user_display_name_cache[self.changeset.user_id].nil?
+ if not user_display_name_cache[self.changeset.user_id].nil?
+ el1['user'] = user_display_name_cache[self.changeset.user_id]
+ el1['uid'] = self.changeset.user_id.to_s
+ end
self.tags.each do |k,v|
el2 = XML::Node.new('tag')
@tags[k] = v
end
+ ##
+ # are the preconditions OK? this is mainly here to keep the duck
+ # typing interface the same between nodes, ways and relations.
+ def preconditions_ok?
+ in_world?
+ end
+
##
# dummy method to make the interfaces of node, way and relation
# more consistent.