我找到了一种非常难看的方式来做我需要的东西(目前只在Rails视图中,我稍后会移动它),这基本上是为了查找特定用户的所有文章,将它们分组到他们的个体中出版物,然后总结用户为该出版物添加的所有文章的份额。
......但它并不漂亮。如果有更好的方法可以做到这一点,有人可以提出建议吗?
=@user.articles.group(:publication).map do |p|
=p.publication
=@user.articles.where("publication = ?", p.publication).sum(:twitter_count)
=@user.articles.where("publication = ?", p.publication).sum(:facebook_count)
=@user.articles.where("publication = ?", p.publication).sum(:linkedin_count)
这给出了输出(例如)NYT 12 18 14 BBC 45 46 47 CNN 75 54 78,这正是我所需要的。
然而,目前,它还在输出一些额外的东西 - “[5,5,5,5,5,5,5,5,5,5,5]总和(:twitter_count)” - 我认为这与.map有关,但我不确定原因。
答案 0 :(得分:2)
在第一行按=
更改-
。
- @user.articles.group(:publication).map do |p|
答案 1 :(得分:0)
你是对的。 .map
正在创建新阵列。
在第一行替换=
-
。 (积分转到juanpastas,我不记得HAML)
#map
的Docs:
创建一个包含块返回值的新数组。
a = [ "a", "b", "c", "d" ]
a.map { |x| x + "!" } #=> ["a!", "b!", "c!", "d!"]
a #=> ["a", "b", "c", "d"]