单用户的很简单,@user.posts.size 但是如果是一个@users用户集合呢?@users.posts.size直接用会报错没有 posts 这个方法
@users.inject(0) { |sum, user| sum += user.posts.size; sum }
Post.where(user_id: @users.map(&:id)).count
#1 楼 @chucai 的方法也可以实现,就是从性能角度说,会产生 N+1 查询。
谢谢两位,Ruby 博大精深啊
#2 楼 @kgen 还再打扰下 kgen,如果要在你这个代码中排除掉‘自己’(current_user.id)的话,需要怎么做呢?
current_user.id
#4 楼 @n00b1
Post.where(user_id: (@users.map(&:id) - [current_user.id])).count
#5 楼 @kgen 居然可以这样...剪掉,跪了~再次感谢!
其实 @users.map(&:id) 就是 @users.ids
@users.map(&:id)
@users.ids
@Kabie 还可以这样,我也跪了妈呀
也碰到这个问题,学到了,之前采用的就是二楼的方法