Actualmente estoy trabajando en una pequeña aplicación de redes sociales y en este momento estoy tratando de crear un modelo que representa amistades entre usuarios. Esto es lo que me ocurrió hasta el momento:¿Cómo implementar un modelo de amistad en Rails 3 para una aplicación de red social?
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
Mi amistad modelo tiene un campo confirmado como booleano, que me gustaría utilizar para definir una amistad como pendiente o confirmada.
¿Cómo puedo acceder a todas las solicitudes pendientes para un determinado usuario? ¿De alguna manera puedo definir usando el método de alcance de Rails? Algo como
current_user.friendships.requests # => [Friendship, Friendship, ...]
sería genial.
¿Cómo puedo hacer que esta asociación sea bidireccional? Puedo simplemente añadir otra amistad una vez que se ha confirmado una solicitud de amistad de tal manera que mi mesa amistad tendría un aspecto similar a este:
| user_id | friend_id | confirmed |
-----------------------------------
| 1 | 2 | true |
| 2 | 1 | true |
¿Cómo un amigo difieren de otro usuario, aparte del hecho de que están vinculados a través de una amistad? –