module LookupBy::Lookup::ClassMethods

Public Instance Methods

[](*args) click to toggle source
# File lib/lookup_by/lookup.rb, line 106
def [](*args)
  case args.size
  when 0 then raise ArgumentError, "#{name}[*args]: at least one argument is required"
  when 1
    case arg = args.first
    when nil     then nil
    when ""      then @lookup.allow_blank? ? @lookup.fetch(arg) : nil
    when String  then @lookup.fetch(arg)
    when Integer then @lookup.fetch(arg)
    when Symbol  then @lookup.fetch(arg.to_s)
    when IPAddr  then @lookup.fetch(arg.to_s)
    when self    then arg
    else raise TypeError, "#{name}[*args]: args must be at least one String, Symbol, Integer, IPAddr, nil, or #{name}"
    end
  else return args.map { |arg| self[arg] }
  end
end
all() click to toggle source

Rails 4.1, 4.2, 5.0

Calls superclass method
# File lib/lookup_by/lookup.rb, line 67
def all
  return super if current_scope

  return super if @lookup.read_through?
  return super if @lookup.cache.empty?
  return super if @lookup.disabled?

  relation.tap do |rel|
    rel.instance_variable_set(:@records, @lookup.cache.values)
    rel.instance_variable_set(:@loaded, true)
  end
end
count(column_name = nil, options = {}) click to toggle source

Rails 4.1, 4.2

Calls superclass method
# File lib/lookup_by/lookup.rb, line 82
def count(column_name = nil, options = {})
  return super if @lookup.read_through?
  return super if column_name

  @lookup.cache.size
end
pluck(*column_names) click to toggle source
Calls superclass method
# File lib/lookup_by/lookup.rb, line 98
def pluck(*column_names)
  return super if @lookup.read_through?
  return super if @lookup.disabled?
  return super if column_names.size > 1

  @lookup.cache.values.map { |o| o.send(column_names.first) }
end
seed(*args) click to toggle source
Calls superclass method
# File lib/lookup_by/lookup.rb, line 124
def seed(*args)
  super if defined?(super)

  @lookup.seed *args
  @lookup.reload
end