我正在 Rails 中创建一个小型社交网络,人们可以在其中互相添加为朋友。我创建了一个名为'user'
,其中包含电子邮件、带有密码盐的强 md5 哈希值等。
如何创建类似将其他用户添加为好友的选项?是否有可能有类似的东西has_many_and_belongs_to :user
在用户模型中?所以一个用户有多个用户,并且属于多个用户。或者我应该使用另一种方式,比如添加一个友谊模型user1s_id:integer
and user2s_id:integer
?
本质上,您需要一个将用户连接到用户的连接模型。但您必须对 Rails 使用更具描述性的术语。
Twitter 不使用 Rails,但以下是使用 Twitter 术语在 Rails 中进行用户关联的方式。注意:Twitter 不需要双向关注(即仅仅因为一个用户关注另一个用户,并不意味着第二个用户关注第一个用户)
class User < ActiveRecord::Base
has_many :followings
has_many :followers, :through => :followings, :class_name => "User"
has_many :followees, :through => :followings, :class_name => "User"
end
class Following < ActiveRecord::Base
# fields: follower_id followee_id (person being followed)
belongs_to :follower, :class_name => "User"
belongs_to :followee, :class_name => "User"
end
强制双向友谊(就像Facebook强制我不能和你成为朋友,除非你是我的朋友)需要更多的工作。您需要使用回调来管理相互条目,或者使用自定义查找器 SQL。使用自定义查找器 SQL 意味着 ActiveRecord 可能无法为您管理关联。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)