Module: LookupBy::Lookup::ClassMethods

Defined in:
lib/lookup_by/lookup.rb

Instance Method Summary collapse

Instance Method Details

#[](*args) ⇒ Object



92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/lookup_by/lookup.rb', line 92

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(*args) ⇒ Object

TODO: Rails 4 needs to return a proxy object here



67
68
69
70
71
72
73
74
# File 'lib/lookup_by/lookup.rb', line 67

def all(*args)
  return super if Rails::VERSION::MAJOR >= 4
  return super if @lookup.read_through?
  return super if @lookup.disabled?
  return super if args.any?

  @lookup.cache.values
end

#count(column_name = nil, options = {}) ⇒ Object



76
77
78
79
80
81
82
# File 'lib/lookup_by/lookup.rb', line 76

def count(column_name = nil, options = {})
  return super if @lookup.read_through?
  return super if @lookup.disabled?
  return super if column_name

  @lookup.cache.size
end

#pluck(*column_names) ⇒ Object



84
85
86
87
88
89
90
# File 'lib/lookup_by/lookup.rb', line 84

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) ⇒ Object



110
111
112
113
114
115
# File 'lib/lookup_by/lookup.rb', line 110

def seed(*args)
  super if defined?(super)

  @lookup.seed *args
  @lookup.reload
end