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.
-
#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
73 74 75 76 77 |
# File 'lib/amistad/active_record/friend_model.rb', line 73 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
87 88 89 |
# File 'lib/amistad/active_record/friend_model.rb', line 87 def blocked self.blockades(true) + self.blockades_by(true) end |
#blocked?(user) ⇒ Boolean
checks if a user is blocked
92 93 94 |
# File 'lib/amistad/active_record/friend_model.rb', line 92 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
121 122 123 |
# File 'lib/amistad/active_record/friend_model.rb', line 121 def common_friends_with(user) self.friends & user.friends end |
#connected_with?(user) ⇒ Boolean
checks if a current user is connected to given user
102 103 104 |
# File 'lib/amistad/active_record/friend_model.rb', line 102 def connected_with?(user) find_any_friendship_with(user).present? end |
#find_any_friendship_with(user) ⇒ Object
returns friendship with given user or nil
126 127 128 129 130 131 132 |
# File 'lib/amistad/active_record/friend_model.rb', line 126 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
97 98 99 |
# File 'lib/amistad/active_record/friend_model.rb', line 97 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
114 115 116 117 118 |
# File 'lib/amistad/active_record/friend_model.rb', line 114 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
107 108 109 110 111 |
# File 'lib/amistad/active_record/friend_model.rb', line 107 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 |
#unblock(user) ⇒ Object
unblocks a friendship
80 81 82 83 84 |
# File 'lib/amistad/active_record/friend_model.rb', line 80 def unblock(user) friendship = find_any_friendship_with(user) return false if friendship.nil? || !friendship.can_unblock?(self) friendship.update_attribute(:blocker, nil) end |