]> git.openstreetmap.org Git - rails.git/blobdiff - app/models/trace.rb
Use HTML5 email and url field types where appropriate
[rails.git] / app / models / trace.rb
index 582c7285cd95e7e02147dbf8697b51450e167992..3f58cee2ef4008c7604ad4f282290a54d0df12d0 100644 (file)
@@ -1,6 +1,14 @@
 class Trace < ActiveRecord::Base
   set_table_name 'gpx_files'
 
 class Trace < ActiveRecord::Base
   set_table_name 'gpx_files'
 
+  belongs_to :user
+  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_presence_of :user_id, :name, :timestamp
   validates_presence_of :description, :on => :create
   validates_length_of :name, :maximum => 255
@@ -9,10 +17,6 @@ class Trace < ActiveRecord::Base
   validates_inclusion_of :inserted, :in => [ true, false ]
   validates_inclusion_of :visibility, :in => ["private", "public", "trackable", "identifiable"]
 
   validates_inclusion_of :inserted, :in => [ true, false ]
   validates_inclusion_of :visibility, :in => ["private", "public", "trackable", "identifiable"]
 
-  belongs_to :user
-  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
-
   def destroy
     super
     FileUtils.rm_f(trace_name)
   def destroy
     super
     FileUtils.rm_f(trace_name)
@@ -262,8 +266,8 @@ class Trace < ActiveRecord::Base
     # If there are any existing points for this trace then delete
     # them - we check for existing points first to avoid locking
     # the table in the common case where there aren't any.
     # If there are any existing points for this trace then delete
     # them - we check for existing points first to avoid locking
     # the table in the common case where there aren't any.
-    if Tracepoint.find(:first, :conditions => ['gpx_id = ?', self.id])
-      Tracepoint.delete_all(['gpx_id = ?', self.id])
+    if Tracepoint.where(:gpx_id => self.id).exists?
+      Tracepoint.delete_all(:gpx_id => self.id)
     end
 
     gpx.points do |point|
     end
 
     gpx.points do |point|