]> git.openstreetmap.org Git - rails.git/blobdiff - app/models/trace.rb
Replace deprecated finder methods
[rails.git] / app / models / trace.rb
index 582c7285cd95e7e02147dbf8697b51450e167992..5394ca01dca73934fb727d0a20426d47031c1beb 100644 (file)
@@ -1,5 +1,14 @@
 class Trace < ActiveRecord::Base
-  set_table_name 'gpx_files'
+  self.table_name = "gpx_files"
+
+  belongs_to :user, :counter_cache => true
+  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, ->(u) { visible.where("visibility IN ('public', 'identifiable') OR user_id = ?", u) }
+  scope :public, -> { where(:visibility => ["public", "identifiable"]) }
+  scope :tagged, ->(t) { joins(:tags).where(:gpx_file_tags => { :tag => t }) }
 
   validates_presence_of :user_id, :name, :timestamp
   validates_presence_of :description, :on => :create
@@ -9,10 +18,6 @@ class Trace < ActiveRecord::Base
   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)
@@ -107,7 +112,7 @@ class Trace < ActiveRecord::Base
     elsif zipped
       mimetype = "application/x-zip"
     else
-      mimetype = "text/xml"
+      mimetype = "application/gpx+xml"
     end
 
     return mimetype
@@ -262,8 +267,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 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|