Cómo implementar un modelo de amistad en Rails 3 para una aplicación de redes sociales?

Actualmente estoy trabajando en una pequeña aplicación de red social y ahora estoy tratando de crear un modelo que represente amistades Entre usuarios. Esto es lo que se me ocurrió hasta ahora:

class User < ActiveRecord::Base

  # ...
  has_many :friendships
  has_many :friends, :through => :friendships

end

class Friendship < ActiveRecord::Base
  belongs_to :user
  belongs_to :friend, :class_name => 'User'
end

Miamista modelo tiene un campoconfirmad como booleano que me gustaría usar para definir una amistad como pendiente o confirmada.

¿Cómo puedo acceder a todas las solicitudes pendientes para un determinado usuario? ¿Puedo definir esto de alguna manera usando Rails 'alcanc método? Algo com

current_user.friendships.requests # => [Friendship, Friendship, ...]

sería genial

¿Cómo puedo hacer que esta asociación sea bidireccional? ¿Simplemente agrego otra amistad una vez que uno ha confirmado una solicitud de amistad para que mi tabla de amistad se vea similar a esta:

| user_id | friend_id | confirmed |
-----------------------------------
| 1       | 2         | true      |
| 2       | 1         | true      |

Respuestas a la pregunta(5)

Su respuesta a la pregunta