- has_many :tags, :class_name => 'Tracetag', :foreign_key => 'gpx_id', :dependent => :destroy
- has_many :points, :class_name => 'Tracepoint', :foreign_key => 'gpx_id', :dependent => :destroy
+ has_many :tags, :class_name => 'Tracetag', :foreign_key => 'gpx_id', :dependent => :delete_all
+ has_many :points, :class_name => 'Tracepoint', :foreign_key => 'gpx_id', :dependent => :delete_all
+
+ scope :visible, where(:visible => true)
+ scope :visible_to, lambda { |u| visible.where("visibility IN ('public', 'identifiable') OR user_id = ?", u) }
+ scope :public, where(:visibility => ["public", "identifiable"])
+
+ validates_presence_of :user_id, :name, :timestamp
+ validates_presence_of :description, :on => :create
+ validates_length_of :name, :maximum => 255
+ validates_length_of :description, :maximum => 255
+# validates_numericality_of :latitude, :longitude
+ validates_inclusion_of :inserted, :in => [ true, false ]
+ validates_inclusion_of :visibility, :in => ["private", "public", "trackable", "identifiable"]
+
+ def destroy
+ super
+ FileUtils.rm_f(trace_name)
+ FileUtils.rm_f(icon_picture_name)
+ FileUtils.rm_f(large_picture_name)
+ end
+
+ def tagstring
+ return tags.collect {|tt| tt.tag}.join(", ")
+ end