Sha256: 0ba771417befc51f0315c827c24c1db29173144996c53a0f7b6900976d965654

Contents?: true

Size: 495 Bytes

Versions: 1

Compression:

Stored size: 495 Bytes

Contents

require "active_sample/version"
require "active_record"

module ActiveSample
  class NegativeSampleError < ArgumentError
  end

  def sample(n = 1)
    if n < 0
      raise NegativeSampleError.new("negative sample number".freeze)
    end

    return nil if count == 0

    if n > count
      where(id: ids.shuffle)
    elsif n > 1
      where(id: ids.sample(n))
    elsif n == 0
      where(id: [])
    else
      find ids.sample
    end
  end
end

ActiveRecord::Base.send :extend, ActiveSample

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
active_sample-1.0.0 lib/active_sample.rb