gpt4 book ai didi

ruby-on-rails - 用户有很多 :users, 还是我必须为基于 friend 的社交网络使用另一种方式?

转载 作者:行者123 更新时间:2023-12-04 06:17:17 24 4
gpt4 key购买 nike

我正在用 Rails 创建一个小型社交网络,人们可以在其中添加彼此为 friend 。我创建了一个名为 'user' 的模型,其中包含电子邮件、带密码盐的强 md5 哈希等。

如何创建类似将其他用户添加为 friend 的选项?是否可以在用户模型中包含类似 has_many_and_belongs_to :user 的内容?所以一个用户有很多用户,属于很多用户。或者我应该使用另一种方式,比如添加一个具有 user1s_id:integeruser2s_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 强制我不能和你成为 friend ,除非你是我的 friend )将需要更多的工作。您将需要使用回调管理相互条目,或者使用自定义查找器 SQL。使用自定义查找器 SQL 意味着 ActiveRecord 可能无法为您管理关联。

关于ruby-on-rails - 用户有很多 :users, 还是我必须为基于 friend 的社交网络使用另一种方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2268672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com