试图在rails3中创建一个特定的数组

时间:2011-02-18 16:58:12

标签: ruby-on-rails ruby ruby-on-rails-3

假设我有帖子,帖子是由许多不同的用户创建的。

我正在尝试获取2D数组,并显示每个用户创建的帖子总和。最终数组可能如下所示:

[[ “杰夫”,2],[ “迈克”,10],[ “珍妮”,3]]

我正在尝试在我的帖子模型中创建它,所以类似于:

def self.distribution

logic here

end

谢谢!

2 个答案:

答案 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]]