Module: ActiveRecord::Base::IdNameCache::ClassMethods

Defined in:
lib/activerecord_idnamecache.rb

Instance Method Summary collapse

Instance Method Details

#[](key = nil) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/activerecord_idnamecache.rb', line 21

def [] key = nil
  return nil if key.nil?

  _k, _v = case key
  when Fixnum, Integer
    [:idname_id, :idname_name]
  when String
    key = key.strip
    [:idname_name, :idname_id]
  end
  raise "#{key.inspect} [#{key.class}] Please use Integer or String" if _k.nil?

  k = "#{self.send(_v)}/#{key}"[0..249]
  v = self._hash_cache[k]
  if v.nil?
    m = self.could_create ? "find_or_create_by_" : "find_by_"
    record = self.send("#{m}#{self.send(_k)}", key)
    v = record.send(self.send(_v)) if record
    self._hash_cache[k] = v
  end
  v
end

#set_key_value(key, value) ⇒ Object



44
45
46
47
# File 'lib/activerecord_idnamecache.rb', line 44

def set_key_value key, value
  self.could_create = true
  _set_key_value key, value
end

#set_key_value_without_create(key, value) ⇒ Object



48
49
50
51
# File 'lib/activerecord_idnamecache.rb', line 48

def set_key_value_without_create key, value
  self.could_create = false
  _set_key_value key, value
end