From aceed9ac83c6cbd0e6ed1a558280bbae4aeac86c Mon Sep 17 00:00:00 2001 From: Akinori MUSHA Date: Fri, 19 Sep 2014 10:16:02 +0900 Subject: [PATCH] Add a scope `with_location` to Event. --- app/models/event.rb | 4 ++++ .../agent_views/user_location_agent/_show.html.erb | 2 +- spec/models/event_spec.rb | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/models/event.rb b/app/models/event.rb index f534ef05..df1bdcfa 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -28,6 +28,10 @@ class Event < ActiveRecord::Base where("expires_at IS NOT NULL AND expires_at < ?", Time.now) } + scope :with_location, -> { + where.not(lat: nil).where.not(lng: nil) + } + # Emit this event again, as a new Event. def reemit! agent.create_event :payload => payload, :lat => lat, :lng => lng diff --git a/app/views/agents/agent_views/user_location_agent/_show.html.erb b/app/views/agents/agent_views/user_location_agent/_show.html.erb index f1756ad8..503f76e5 100644 --- a/app/views/agents/agent_views/user_location_agent/_show.html.erb +++ b/app/views/agents/agent_views/user_location_agent/_show.html.erb @@ -2,7 +2,7 @@

Recent Event Map

-<% events = @agent.events.where("lat IS NOT null AND lng IS NOT null").order("id desc").limit(500) %> +<% events = @agent.events.with_location.order("id desc").limit(500) %> <% if events.length > 0 %>
diff --git a/spec/models/event_spec.rb b/spec/models/event_spec.rb index c2e40c03..a5f3ddfb 100644 --- a/spec/models/event_spec.rb +++ b/spec/models/event_spec.rb @@ -1,6 +1,20 @@ require 'spec_helper' describe Event do + describe ".with_location" do + it "selects events with location" do + event = events(:bob_website_agent_event) + event.lat = 2 + event.lng = 3 + event.save! + Event.with_location.pluck(:id).should == [event.id] + + event.lat = nil + event.save! + Event.with_location.should be_empty + end + end + describe "#reemit" do it "creates a new event identical to itself" do events(:bob_website_agent_event).lat = 2