Rails,用户模型上的自引用关联来定义朋友/关注者

我正在努力创建一个友谊协会。 我发现并一直关注教程:

http://railscasts.com/episodes/163-self-referential-association

本教程的问题是没有状态概念(接受,待定,忽略)

关于如何创建这种类型的关系但有状态的任何想法,所以当你的朋友请求它是待定的,直到正确的用户接受或忽略?

谢谢

假设友谊中的两个参与者也可能有其他友谊,那么你需要某个地方来存储这种特殊友谊的状态。 这表明您需要一个可以通过has_and_belongs_to_many获得的连接模型。 然后您的状态可以存储在连接表中(在这种情况下是友谊)

class Person< ActiveRecord::Base has_many :friendships has_many :friends, :class_name => "Person", :through => :friendships end class Friendship < ActiveRecord::Base belongs_to :friend1, :class_name => "Person" belongs_to :friend2, :class_name => "Person" end 

但正如你可能从kludgy friend1和friend2那里注意到的那样,你要打的问题是你可能希望友谊作为一种非定向关系。

这里有一个太大的话题要详细说明,但这里有一个地方可以解决: 一篇很有前途的文章,我还没有真正使用过

然后最后请注意,虽然友谊是双向的,但友情请求不是 – 在请求的情况下,您需要知道谁发出了它以及谁收到它。 所以我猜你会想要一个双向的友谊关系和一个指向的friend_request关系。 当请求被批准时,删除关系并添加双向友谊。