class RelationalRedisMapper::Relation
Attributes
order_by_method[R]
relation_sym[R]
subject[R]
Public Class Methods
new(subject, relation_sym, order_by_method=nil)
click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 10 def initialize(subject, relation_sym, order_by_method=nil) @subject = subject @relation_sym = relation_sym @order_by_method = order_by_method end
Public Instance Methods
<<(relation)
click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 16 def << relation $redis.zadd(relation_key, score(relation), relation.id) all end
all()
click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 21 def all find_all_by_ids all_relation_ids end
first()
click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 32 def first find all_relation_ids(0,0) end
last()
click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 36 def last find all_relation_ids(-1,-1) end
where(attr, val)
click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 25 def where(attr, val) ids = all_relation_ids.select do |id| get_all_ids(attr, val).include?(id) end find_all_by_ids ids end
Private Instance Methods
all_relation_ids(start=0, stop=-1)
click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 44 def all_relation_ids(start=0, stop=-1) $redis.zrange(relation_key, start, stop) end
relation_key()
click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 41 def relation_key "#{subject.class_key}:#{relation_klass.class_key}:#{subject.id}" end
relation_klass()
click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 50 def relation_klass relation_sym.to_s.classify.constantize end
score(object)
click to toggle source
# File lib/relational_redis_mapper/relation.rb, line 47 def score(object) order_by_method ? object.send(order_by_method) : 0 end