我一直试图找到一个理想的解决方案来跟随 mongoid 并找到了这个。 HABTM mongoid 追随者/追随者
出于某种原因,我不确定这有多优化,而这篇文章早在 2011 年就已经发布了。
如果以这种方式实现,则追随者和追随者 id 将保存在数组中。对于少量追随者来说,这很好,而且可能很快。但是想象一下,如果有成千上万的追随者,如果你每次都在数组中搜索一项,那么遍历数组可能不是最快的方法。
基于本教程链接,建议将http://ruby.railstutorial.org/chapters/following-users 放入关系表中,当您只需要检查关系时,这可以快速查找。
我的问题是下面的代码非常适合 mongoid 优化吗?当有大量追随者时,我需要一些专家建议你们如何处理人际关系。
谢谢。
class User
include Mongoid::Document
field :name, type: String
has_and_belongs_to_many :following, class_name: 'User', inverse_of: :followers, autosave: true
has_and_belongs_to_many :followers, class_name: 'User', inverse_of: :following
def follow!(user)
if self.id != user.id && !self.following.include?(user)
self.following << user
end
end
def unfollow!(user)
self.following.delete(user)
end
end