Module: LookupBy::Lookup::ClassMethods

Defined in:
lib/lookup_by/lookup.rb

Instance Method Summary collapse

Instance Method Details

#[](*args) ⇒ Object



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# 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

#allObject

Rails 4.1, 4.2, 5.0



67
68
69
70
71
72
73
74
75
76
77
78
# 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) ⇒ Object

Rails 5.0



82
83
84
85
86
87
# 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) ⇒ Object



98
99
100
101
102
103
104
# 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) ⇒ Object



124
125
126
127
128
129
# File 'lib/lookup_by/lookup.rb', line 124

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

  @lookup.seed *args
  @lookup.reload
end