]> git.openstreetmap.org Git - rails.git/blobdiff - app/models/trace.rb
Refactor search JS
[rails.git] / app / models / trace.rb
index 582c7285cd95e7e02147dbf8697b51450e167992..5e609786d4d10ffce7b70120afcdd8fa5cef6622 100644 (file)
@@ -1,5 +1,14 @@
 class Trace < ActiveRecord::Base
 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, lambda { |u| visible.where("visibility IN ('public', 'identifiable') OR user_id = ?", u) }
+  scope :public, where(:visibility => ["public", "identifiable"])
+  scope :tagged, lambda { |t| joins(:tags).where(:gpx_file_tags => { :tag => t }) }
 
   validates_presence_of :user_id, :name, :timestamp
   validates_presence_of :description, :on => :create
 
   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"]
 
   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 +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 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|