Merge remote-tracking branch 'origin/master' into event_update_should_not_touch_last_event_at

Conflicts:
app/models/event.rb

Andrew Cantino 10 年之前
父节点
当前提交
0b732a7662
共有 2 个文件被更改,包括 6 次插入4 次删除
  1. 0 2
      app/models/agent.rb
  2. 6 2
      app/models/event.rb

+ 0 - 2
app/models/agent.rb

@@ -60,8 +60,6 @@ class Agent < ActiveRecord::Base
60 60
 
61 61
   scope :of_type, lambda { |type|
62 62
     type = case type
63
-             when String, Symbol, Class
64
-               type.to_s
65 63
              when Agent
66 64
                type.class.to_s
67 65
              else

+ 6 - 2
app/models/event.rb

@@ -26,6 +26,10 @@ class Event < ActiveRecord::Base
26 26
   after_create :update_agent_last_event_at
27 27
   after_create :possibly_propagate
28 28
 
29
+  scope :expired, lambda {
30
+    where("expires_at IS NOT NULL AND expires_at < ?", Time.now)
31
+  }
32
+
29 33
   # Emit this event again, as a new Event.
30 34
   def reemit!
31 35
     agent.create_event :payload => payload, :lat => lat, :lng => lng
@@ -34,8 +38,8 @@ class Event < ActiveRecord::Base
34 38
   # Look for Events whose `expires_at` is present and in the past.  Remove those events and then update affected Agents'
35 39
   # `events_counts` cache columns.  This method is called by bin/schedule.rb periodically.
36 40
   def self.cleanup_expired!
37
-    affected_agents = Event.where("expires_at IS NOT NULL AND expires_at < ?", Time.now).group("agent_id").pluck(:agent_id)
38
-    Event.where("expires_at IS NOT NULL AND expires_at < ?", Time.now).delete_all
41
+    affected_agents = Event.expired.group("agent_id").pluck(:agent_id)
42
+    Event.expired.delete_all
39 43
     Agent.where(:id => affected_agents).update_all "events_count = (select count(*) from events where agent_id = agents.id)"
40 44
   end
41 45