Module: Dynamoid::IdentityMap::ClassMethods
- Defined in:
- lib/dynamoid/identity_map.rb
Instance Method Summary collapse
- #find_by_id(id, options = {}) ⇒ Object
- #from_database(attrs = {}) ⇒ Object
- #identity_map ⇒ Object
- #identity_map_key(attrs) ⇒ Object
- #identity_map_off? ⇒ Boolean
- #identity_map_on? ⇒ Boolean
Instance Method Details
#find_by_id(id, options = {}) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/dynamoid/identity_map.rb', line 32 def find_by_id(id, = {}) return super if identity_map_off? key = id.to_s if range_key = [:range_key] key += "::#{range_key}" end identity_map[key] || super end |
#from_database(attrs = {}) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/dynamoid/identity_map.rb', line 16 def from_database(attrs = {}) return super if identity_map_off? key = identity_map_key(attrs) document = identity_map[key] if document.nil? document = super identity_map[key] = document else document.load(attrs) end document end |
#identity_map ⇒ Object
12 13 14 |
# File 'lib/dynamoid/identity_map.rb', line 12 def identity_map @identity_map ||= {} end |
#identity_map_key(attrs) ⇒ Object
44 45 46 47 48 |
# File 'lib/dynamoid/identity_map.rb', line 44 def identity_map_key(attrs) key = attrs[hash_key].to_s key += "::#{attrs[range_key]}" if range_key key end |
#identity_map_off? ⇒ Boolean
54 55 56 |
# File 'lib/dynamoid/identity_map.rb', line 54 def identity_map_off? !identity_map_on? end |