Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails,用户模型上的自参考关联,用于定义朋友/追随者_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails,用户模型上的自参考关联,用于定义朋友/追随者

Ruby on rails Rails,用户模型上的自参考关联,用于定义朋友/追随者,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我想建立一个友谊协会。我发现并一直遵循教程: 本教程的问题在于没有状态的概念(接受、挂起、忽略) 有没有关于如何创建这种类型的关系的想法,但是有一个状态,所以当你的朋友请求时,它将被挂起,直到正确的用户接受或忽略 谢谢假设友谊中的两个参与者可能还有其他友谊,那么您需要在某个地方存储此特定友谊的状态。这表明您需要一个连接模型,您可以通过has\u和\u属于\u-many获得该模型。然后,您的状态可以存储在联接表中(在本例中为友谊) class-Person“人”,:通过=>:友谊 结束 类友谊“

我想建立一个友谊协会。我发现并一直遵循教程:

本教程的问题在于没有状态的概念(接受、挂起、忽略)

有没有关于如何创建这种类型的关系的想法,但是有一个状态,所以当你的朋友请求时,它将被挂起,直到正确的用户接受或忽略


谢谢

假设友谊中的两个参与者可能还有其他友谊,那么您需要在某个地方存储此特定友谊的状态。这表明您需要一个连接模型,您可以通过has\u和\u属于\u-many获得该模型。然后,您的状态可以存储在联接表中(在本例中为友谊)

class-Person“人”,:通过=>:友谊
结束
类友谊“个人”
属于:friend2,:class\u name=>“个人”
结束
但是,正如你可能注意到的那样,你即将遇到的问题是,你可能希望友谊是一种非直接的关系

这是一个太大的主题,无法在此详述,但这里有一个地方:

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

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