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