新手问题 问个蠢问题,如何合计出 @users.posts 呢

n00b1 · 2013年12月28日 · 最后由 w7938940 回复于 2013年12月29日 · 2180 次阅读

单用户的很简单,@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)的话,需要怎么做呢?

#4 楼 @n00b1

Post.where(user_id: (@users.map(&:id) - [current_user.id])).count

#5 楼 @kgen 居然可以这样...剪掉,跪了~再次感谢!

其实 @users.map(&:id) 就是 @users.ids

@Kabie 还可以这样,我也跪了妈呀

也碰到这个问题,学到了,之前采用的就是二楼的方法

需要 登录 后方可回复, 如果你还没有账号请 注册新账号