Daniel Doubrovkine bio photo

Daniel Doubrovkine

aka dB., CTO at artsy.net, fun at playplay.io, NYC

Email Twitter LinkedIn Github
module Mongoid
  class Criteria
    def sample(n = 1)
      indexes = (0..self.count-1).sort_by{ rand }.slice(0,n).collect!
      if n == 1
        return self.skip(indexes.first).first
      else
        return indexes.map{ |index| self.skip(index).first }
      end
    end
  end
end

https://gist.github.com/3113975

Can we do better?