Module: Amistad::FriendModel::InstanceMethods

Defined in:
lib/amistad/friend_model.rb

Instance Method Summary collapse

Instance Method Details

#approve(user) ⇒ Object

approve a friendship invitation. If the operation succeeds, the method returns true, else false



46
47
48
49
50
# File 'lib/amistad/friend_model.rb', line 46

def approve(user)
  friendship = find_any_friendship_with(user)
  return false if friendship.nil? || has_invited?(user)
  friendship.update_attribute(:pending, false)
end

#block(user) ⇒ Object

blocks a friendship request



58
59
60
61
62
63
# File 'lib/amistad/friend_model.rb', line 58

def block(user)
  friendship = find_any_friendship_with(user)
  return false if friendship.nil? || friendship.user == self
  friendship.blocked = true
  friendship.save
end

#common_friends_with(user) ⇒ Object

return the list of the ones among its friends which are also friend with the given use



104
105
106
# File 'lib/amistad/friend_model.rb', line 104

def common_friends_with(user)
  self.friends & user.friends
end

#find_any_friendship_with(user) ⇒ Object



108
109
110
111
112
113
114
# File 'lib/amistad/friend_model.rb', line 108

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

#friendsObject

returns the list of approved friends



53
54
55
# File 'lib/amistad/friend_model.rb', line 53

def friends
  self.invited(true) + self.invited_by(true)
end

#has_invited?(user) ⇒ Boolean

Returns:

  • (Boolean)


97
98
99
100
101
# File 'lib/amistad/friend_model.rb', line 97

def has_invited?(user)
  friendship = find_any_friendship_with(user)
  return false if friendship.nil?
  friendship.friend == user
end

#invite(user) ⇒ Object

suggest a user to become a friend. If the operation succeeds, the method returns true, else false



40
41
42
43
# File 'lib/amistad/friend_model.rb', line 40

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

#is_connected_with?(user) ⇒ Boolean

Returns:

  • (Boolean)


86
87
88
# File 'lib/amistad/friend_model.rb', line 86

def is_connected_with?(user)
  !find_any_friendship_with(user).nil?
end

#is_friend_with?(user) ⇒ Boolean

checks if a user is a friend

Returns:

  • (Boolean)


82
83
84
# File 'lib/amistad/friend_model.rb', line 82

def is_friend_with?(user)
  friends.include?(user)
end

#remove(user) ⇒ Object

deletes a friendship



74
75
76
77
78
79
# File 'lib/amistad/friend_model.rb', line 74

def remove(user)
  friendship = find_any_friendship_with(user)
  return false if friendship.nil?
  friendship.destroy
  friendship.destroyed?
end

#unblock(user) ⇒ Object

unblocks a friendship



66
67
68
69
70
71
# File 'lib/amistad/friend_model.rb', line 66

def unblock(user)
  friendship = find_any_friendship_with(user)
  return false if friendship.nil? || friendship.user == self
  friendship.blocked = false
  friendship.save
end

#was_invited_by?(user) ⇒ Boolean

checks if a user send a friendship’s invitation

Returns:

  • (Boolean)


91
92
93
94
95
# File 'lib/amistad/friend_model.rb', line 91

def was_invited_by?(user)
  friendship = find_any_friendship_with(user)
  return false if friendship.nil?
  friendship.user == user
end