diff --git a/ruby/lib/jam_ruby/models/search.rb b/ruby/lib/jam_ruby/models/search.rb index f51ccd673..59b7d4875 100644 --- a/ruby/lib/jam_ruby/models/search.rb +++ b/ruby/lib/jam_ruby/models/search.rb @@ -247,5 +247,19 @@ module JamRuby false end + def self.new_musicians(since_date=Time.now - 1.week, max_count=100, radius=500) + return unless block_given? + User.where(['lat IS NOT NULL AND lng IS NOT NULL']).find_each do |usr| + rel = User.where(:musician => true) + .where(['created_at >= ? AND users.id != ?', since_date, usr.id]) + .within(radius, :origin => [usr.lat, usr.lng]) + .order('created_at DESC') + .limit(max_count) + if 0 < rel.count + yield rel + end + end + end + end end diff --git a/ruby/spec/jam_ruby/models/musician_search_spec.rb b/ruby/spec/jam_ruby/models/musician_search_spec.rb index 5ce018da5..159799d2e 100644 --- a/ruby/spec/jam_ruby/models/musician_search_spec.rb +++ b/ruby/spec/jam_ruby/models/musician_search_spec.rb @@ -168,4 +168,10 @@ describe User do results.musicians.count.should == User.count end + it "should find new musicians nearby" do + Search.new_musicians do |usrs| + usrs.count.should.not == 0 + end + end + end