belongs_to :user
- has_many :way_segments, :foreign_key => 'id'
+ has_many :way_segments, :foreign_key => 'id', :order => 'sequence_id'
has_many :way_tags, :foreign_key => 'id'
- has_many :old_ways, :foreign_key => :id
+ has_many :old_ways, :foreign_key => 'id', :order => 'version'
set_table_name 'current_ways'
user_display_name_cache = {} if user_display_name_cache.nil?
- if user_display_name_cache and user_display_name_cache[self.user_id]
+ if user_display_name_cache and user_display_name_cache.key?(self.user_id)
# use the cache if available
elsif self.user.data_public?
user_display_name_cache[self.user_id] = self.user.display_name
t = Time.now
self.timestamp = t
self.save!
-
+
+ tags = self.tags
+
WayTag.delete_all(['id = ?', self.id])
- self.tags.each do |k,v|
+ tags.each do |k,v|
tag = WayTag.new
tag.k = k
tag.v = v
tag.save!
end
+ segs = self.segs
+
WaySegment.delete_all(['id = ?', self.id])
-
- i = 0
- self.segs.each do |n|
+
+ i = 1
+ segs.each do |n|
seg = WaySegment.new
seg.id = self.id
seg.segment_id = n
def preconditions_ok?
return false if self.segs.empty?
self.segs.each do |n|
- segment = Segment.find(n)
+ segment = Segment.find(:first, :conditions => ["id = ?", n])
unless segment and segment.visible and segment.preconditions_ok?
return false
end