has_many :old_ways, -> { order(:version) }
has_many :way_nodes, -> { order(:sequence_id) }
- has_many :nodes, -> { order("sequence_id") }, :through => :way_nodes
+ has_many :nodes, :through => :way_nodes
has_many :way_tags
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
+ has_many :containing_relations, :class_name => "Relation", :through => :containing_relation_members, :source => :relation
validates_presence_of :id, :on => :update
validates_presence_of :changeset_id,:version, :timestamp
validates_associated :changeset
scope :visible, -> { where(:visible => true) }
- scope :invisible, -> { where(:visible => false) }
+ scope :invisible, -> { where(:visible => false) }
# Read in xml as text and return it's Way object representation
def self.from_xml(xml, create=false)
end
def nds
- unless @nds
- @nds = Array.new
- self.way_nodes.each do |nd|
- @nds += [nd.node_id]
- end
- end
- @nds
+ @nds ||= self.way_nodes.collect { |n| n.node_id }
end
def tags
- unless @tags
- @tags = {}
- self.way_tags.each do |tag|
- @tags[tag.k] = tag.v
- end
- end
- @tags
+ @tags ||= Hash[self.way_tags.collect { |t| [t.k, t.v] }]
end
def nds=(s)