Module: Followable
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/followable.rb,
lib/followable/version.rb
Constant Summary collapse
- VERSION =
"0.0.1"
Instance Method Summary collapse
-
#follow!(object) ⇒ Object
follow an object.
-
#followed_by?(object) ⇒ Boolean
does the object follow self.
-
#followers ⇒ Object
objects that self follows.
-
#followers_count ⇒ Object
number of followers.
-
#following ⇒ Object
objects that follow self.
-
#following?(object) ⇒ Boolean
does self follow user.
-
#following_count ⇒ Object
number of users being followed.
-
#redis_key(str, object) ⇒ Object
helper method to generate redis keys.
-
#unfollow!(object) ⇒ Object
unfollow an object.
Instance Method Details
#follow!(object) ⇒ Object
follow an object
8 9 10 11 12 13 |
# File 'lib/followable.rb', line 8 def follow!(object) $redis.multi do $redis.sadd(self.redis_key(:following, object), object.id) $redis.sadd(object.redis_key(:followers, object), self.id) end end |
#followed_by?(object) ⇒ Boolean
does the object follow self
42 43 44 |
# File 'lib/followable.rb', line 42 def followed_by?(object) $redis.sismember(self.redis_key(:followers, object), object.id) end |
#followers ⇒ Object
objects that self follows
24 25 26 27 |
# File 'lib/followable.rb', line 24 def followers object_ids = $redis.smembers(self.redis_key(:followers, self)) self.class.where(:id => object_ids) end |
#followers_count ⇒ Object
number of followers
52 53 54 |
# File 'lib/followable.rb', line 52 def followers_count $redis.scard(self.redis_key(:followers, self)) end |
#following ⇒ Object
objects that follow self
30 31 32 33 |
# File 'lib/followable.rb', line 30 def following object_ids = $redis.smembers(self.redis_key(:following, self)) self.class.where(:id => object_ids) end |
#following?(object) ⇒ Boolean
does self follow user
47 48 49 |
# File 'lib/followable.rb', line 47 def following?(object) $redis.sismember(self.redis_key(:following, object), object.id) end |
#following_count ⇒ Object
number of users being followed
57 58 59 |
# File 'lib/followable.rb', line 57 def following_count $redis.scard(self.redis_key(:following, self)) end |
#redis_key(str, object) ⇒ Object
helper method to generate redis keys
62 63 64 |
# File 'lib/followable.rb', line 62 def redis_key(str, object) "user:#{self.id}:#{str}:#{object.class.name.downcase}" end |
#unfollow!(object) ⇒ Object
unfollow an object
16 17 18 19 20 21 |
# File 'lib/followable.rb', line 16 def unfollow!(object) $redis.multi do $redis.srem(self.redis_key(:following, object), user.id) $redis.srem(user.redis_key(:followers, object), self.id) end end |