lib/blendris/reference_set.rb in blendris-0.5 vs lib/blendris/reference_set.rb in blendris-0.6

- old
+ new

@@ -3,19 +3,31 @@ # RedisReferenceSet is a wrapper to a Redis set value and serves # as a pointer to multiple other blendris objects. class RedisReferenceSet < RedisReferenceBase - include RedisNode include Enumerable def refs @refs ||= RedisSet.new(@key) end def set(*objs) - refkeys = objs.flatten.compact.map {|o| o.key} - self.refs.set refkeys + objs.flatten! + objs.compact! + + # Delete reference keys that were removed. + self.each do |obj| + unless objs.include? obj + apply_reverse_delete obj + end + end + + # Clear the current set. + self.refs.clear + + # Add the new objects to the set. + self << objs self ensure notify_changed end