我正在使用名为acts_as_follower
的宝石
假设有3个用户叫John,Mike和Justin。
他们每个人都追随另外两个人。
在Mike辞职后,Mike的User
记录将被删除,但Follow
记录仍然存在。
user = User.find_by_name(`John`)
@follower_users = user.followers(order: 'updated_at DESC', limit: '10')
@follower_users_count = user.followers(order: 'updated_at DESC').count
@follower_users_count
应该返回1,因为只有1个粉丝(因为Mike不再存在)
但是,这会返回“2”,因为它会计算Follow
的数量
在这种情况下,如何获得实际的粉丝数量?
答案 0 :(得分:1)
首先:您使用的是最新版本的acts_as_follower gem吗?
我看一下code,这里与:dependent => :destroy
的关系:
has_many :followings, :as => :followable, :dependent => :destroy, :class_name => 'Follow'
因此,在销毁用户之后它不应该是一个问题 - 所有以下关系也将被破坏。如果不是 - 也许您正在使用paranoia gem或类似的东西?请告诉我你的Gemfile。
谢谢!如果我不这样做怎么办?我怎么还能算 避免不存在的用户?
如果你不这样做,你可以这样做:
@follower_users_count = user.followers(order: 'updated_at DESC').select{|f| f.user.present? }.count
此外,您可以查看gem code并尝试将users表连接到sql请求并检查是否存在用户。
但是这种方法很糟糕,如果你检查:dependent => :destroy
无效的原因会更好。