Class: Blendris::RedisReference
Overview
RedisReference is a wrapper to a Redis string value and serves as a pointer to another blendris object.
Instance Attribute Summary
Attributes included from RedisNode
#key
Instance Method Summary
collapse
Methods included from RedisNode
#clear, #exists?, #initialize, #notify_changed, #rename, #type
database=, flushdb, #generate_key, #in_temporary_set, redis, #redis
Methods included from Utils
#blank, #camelize, #constantize, #sanitize_key
#apply_reverse_add, #apply_reverse_delete, cast_from_redis, cast_to_redis, #initialize
Instance Method Details
#assign_ref(value) ⇒ Object
40
41
42
|
# File 'lib/blendris/reference.rb', line 40
def assign_ref(value)
self.set value
end
|
#get ⇒ Object
36
37
38
|
# File 'lib/blendris/reference.rb', line 36
def get
self.class.cast_from_redis ref.get
end
|
#ref ⇒ Object
10
11
12
|
# File 'lib/blendris/reference.rb', line 10
def ref
@ref ||= RedisString.new(@key)
end
|
#references(value) ⇒ Object
48
49
50
51
52
53
|
# File 'lib/blendris/reference.rb', line 48
def references(value)
refval = ref.get
return true if refval.nil? && value.nil?
return refval == value.key
end
|
#remove_ref(value) ⇒ Object
44
45
46
|
# File 'lib/blendris/reference.rb', line 44
def remove_ref(value)
self.set nil
end
|
#set(obj) ⇒ Object
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/blendris/reference.rb', line 14
def set(obj)
old_obj = self.get if @reverse
modified = false
refkey = self.class.cast_to_redis(obj, @options)
if refkey == nil
ref.set nil
modified = true
elsif refkey != ref.get
ref.set refkey
apply_reverse_add obj
modified = true
end
if modified
apply_reverse_delete(old_obj)
notify_changed
end
obj
end
|