Module: Amistad::ActiveRecord::FriendModel::InstanceMethods
- Defined in:
- lib/amistad/active_record/friend_model.rb
Instance Method Summary collapse
-
#approve(user) ⇒ Object
approve a friendship invitation.
-
#block(user) ⇒ Object
blocks a friendship.
-
#blocked ⇒ Object
returns the list of blocked friends.
-
#blocked?(user) ⇒ Boolean
checks if a user is blocked.
-
#common_friends_with(user) ⇒ Object
return the list of the ones among its friends which are also friend with the given use.
-
#connected_with?(user) ⇒ Boolean
checks if a current user is connected to given user.
-
#find_any_friendship_with(user) ⇒ Object
returns friendship with given user or nil.
-
#friend_with?(user) ⇒ Boolean
checks if a user is a friend.
-
#friends ⇒ Object
returns the list of approved friends.
-
#invite(user) ⇒ Object
suggest a user to become a friend.
-
#invited?(user) ⇒ Boolean
checks if a current user invited given user.
-
#invited_by?(user) ⇒ Boolean
checks if a current user received invitation from given user.
-
#remove_friendship(user) ⇒ Object
deletes a friendship.
-
#total_blocked ⇒ Object
total # of blockades and blockedes_by without association loading.
-
#total_friends ⇒ Object
total # of invited and invited_by without association loading.
-
#unblock(user) ⇒ Object
unblocks a friendship.
Instance Method Details
#approve(user) ⇒ Object
approve a friendship invitation. If the operation succeeds, the method returns true, else false
54 55 56 57 58 |
# File 'lib/amistad/active_record/friend_model.rb', line 54 def approve(user) friendship = find_any_friendship_with(user) return false if friendship.nil? || invited?(user) friendship.update_attribute(:pending, false) end |
#block(user) ⇒ Object
blocks a friendship
78 79 80 81 82 |
# File 'lib/amistad/active_record/friend_model.rb', line 78 def block(user) friendship = find_any_friendship_with(user) return false if friendship.nil? || !friendship.can_block?(self) friendship.update_attribute(:blocker, self) end |
#blocked ⇒ Object
returns the list of blocked friends
92 93 94 |
# File 'lib/amistad/active_record/friend_model.rb', line 92 def blocked self.blockades(true) + self.blockades_by(true) end |
#blocked?(user) ⇒ Boolean
checks if a user is blocked
102 103 104 |
# File 'lib/amistad/active_record/friend_model.rb', line 102 def blocked?(user) blocked.include?(user) end |
#common_friends_with(user) ⇒ Object
return the list of the ones among its friends which are also friend with the given use
131 132 133 |
# File 'lib/amistad/active_record/friend_model.rb', line 131 def common_friends_with(user) self.friends & user.friends end |
#connected_with?(user) ⇒ Boolean
checks if a current user is connected to given user
112 113 114 |
# File 'lib/amistad/active_record/friend_model.rb', line 112 def connected_with?(user) find_any_friendship_with(user).present? end |
#find_any_friendship_with(user) ⇒ Object
returns friendship with given user or nil
136 137 138 139 140 141 142 |
# File 'lib/amistad/active_record/friend_model.rb', line 136 def find_any_friendship_with(user) friendship = Friendship.where(:user_id => self.id, :friend_id => user.id).first if friendship.nil? friendship = Friendship.where(:user_id => user.id, :friend_id => self.id).first end friendship end |
#friend_with?(user) ⇒ Boolean
checks if a user is a friend
107 108 109 |
# File 'lib/amistad/active_record/friend_model.rb', line 107 def friend_with?(user) friends.include?(user) end |
#friends ⇒ Object
returns the list of approved friends
68 69 70 |
# File 'lib/amistad/active_record/friend_model.rb', line 68 def friends self.invited(true) + self.invited_by(true) end |
#invite(user) ⇒ Object
suggest a user to become a friend. If the operation succeeds, the method returns true, else false
48 49 50 51 |
# File 'lib/amistad/active_record/friend_model.rb', line 48 def invite(user) return false if user == self || find_any_friendship_with(user) Friendship.new(:user_id => self.id, :friend_id => user.id).save end |
#invited?(user) ⇒ Boolean
checks if a current user invited given user
124 125 126 127 128 |
# File 'lib/amistad/active_record/friend_model.rb', line 124 def invited?(user) friendship = find_any_friendship_with(user) return false if friendship.nil? friendship.friend == user end |
#invited_by?(user) ⇒ Boolean
checks if a current user received invitation from given user
117 118 119 120 121 |
# File 'lib/amistad/active_record/friend_model.rb', line 117 def invited_by?(user) friendship = find_any_friendship_with(user) return false if friendship.nil? friendship.user == user end |
#remove_friendship(user) ⇒ Object
deletes a friendship
61 62 63 64 65 |
# File 'lib/amistad/active_record/friend_model.rb', line 61 def remove_friendship(user) friendship = find_any_friendship_with(user) return false if friendship.nil? friendship.destroy && friendship.destroyed? end |
#total_blocked ⇒ Object
total # of blockades and blockedes_by without association loading
97 98 99 |
# File 'lib/amistad/active_record/friend_model.rb', line 97 def total_blocked self.blockades(false).count + self.blockades_by(false).count end |
#total_friends ⇒ Object
total # of invited and invited_by without association loading
73 74 75 |
# File 'lib/amistad/active_record/friend_model.rb', line 73 def total_friends self.invited(false).count + self.invited_by(false).count end |
#unblock(user) ⇒ Object
unblocks a friendship
85 86 87 88 89 |
# File 'lib/amistad/active_record/friend_model.rb', line 85 def unblock(user) friendship = find_any_friendship_with(user) return false if friendship.nil? || !friendship.can_unblock?(self) friendship.update_attribute(:blocker, nil) end |