lib/blendris/reference_set.rb in blendris-0.0.4 vs lib/blendris/reference_set.rb in blendris-0.5
- old
+ new
@@ -10,12 +10,20 @@
def refs
@refs ||= RedisSet.new(@key)
end
- # TODO set should be a real set, while << appends
def set(*objs)
+ refkeys = objs.flatten.compact.map {|o| o.key}
+ self.refs.set refkeys
+
+ self
+ ensure
+ notify_changed
+ end
+
+ def <<(*objs)
objs.flatten!
objs.compact!
objs.each do |obj|
if refkey = self.class.cast_to_redis(obj, @options)
@@ -26,11 +34,10 @@
notify_changed if objs.count > 0
self
end
- alias :<< :set
def delete(obj)
if refkey = self.class.cast_to_redis(obj, @options)
deleted = refs.delete(refkey)
apply_reverse_delete(obj) if deleted
@@ -54,10 +61,10 @@
refs.include? refkey
end
def assign_ref(*values)
- self.set *values
+ self << values
end
def remove_ref(value)
self.delete value
end