class WinewooCore::Services::Finders::Wines::TopWinesFinder
Constants
- MAX_WINES
Max number of wines
Public Instance Methods
find()
click to toggle source
# File lib/winewoo_core/services/finders/wines/top_wines_finder.rb, line 9 def find cached_wines = Redis.current.get("selected_wines") if Redis.current max = @top_wines.to_i if cached_wines.blank? query = WinewooCore::Repositories::Mongo::Queries::WineQuery.new.published.officials.with_label.percented_by(74, 100) query = query.from_interpro(@interpro.id) if @interpro wines = (0..query.count-1).sort_by{rand}.slice(0, MAX_WINES).collect! do |i| query.skip(i).first end if Redis.current wids = wines.map {|w| w.id } Redis.current.set("selected_wines", wids.to_json) Redis.current.expire "selected_wines", 86400 end return wines.take(max.to_i), nil, nil else wines = JSON.parse(cached_wines).map do |wid| WinewooCore::Repositories::Mongo::Queries::WineQuery.new.find(wid) end return wines.take(max.to_i), nil, nil end end