假设我有帖子,帖子是由许多不同的用户创建的。
我正在尝试获取2D数组,并显示每个用户创建的帖子总和。最终数组可能如下所示:
[[ “杰夫”,2],[ “迈克”,10],[ “珍妮”,3]]
等
我正在尝试在我的帖子模型中创建它,所以类似于:
def self.distribution
logic here
end
谢谢!
答案 0 :(得分:2)
这是一个简单的Rails方法:
class User
def self.distribution
User.
joins('posts').
group('users.id').
select('users.name, count(posts.id) as counter').
map{ |entry| [entry.name, entry.counter] }
end
end
User.distribution
=> [["Jeff",2],["Mike",10],["Jenny",3]]
答案 1 :(得分:0)
在rails中使用count
方法。
User.count('posts.id', :include => :posts, :group => "users.name")
调用返回有序哈希:
#<OrderedHash {"Jeff"=>2, "Mike"=>10, "Jenny"=>1}>
您可以将结果转换为数组:
User.count('posts.id', :include => :posts, :group => "users.name").to_a
该调用返回一个数组:
[["Jeff", 2], ["Mike", 10], ["Jenny", 1]]