如何显示性别特定注册用户的总数

时间:2014-10-21 19:50:04

标签: ruby-on-rails

我正在创建一个管理控制面板,我在最后一步是统计数据。

如何为选择Male作为gender的注册用户创建统计信息?

示例:

545名男性注册用户

323名女性注册用户

所以我想在我的视图中输出上面的例子。我不确定如何计算gender列的行数。

2 个答案:

答案 0 :(得分:4)

您提供的信息不足,所以这里有一点心灵感应:) 我想您的模型User中包含:gender属性(字符串'男性'或女性')。 因此,获得所需的计数将如下所示:

User.group(:gender).count

这将提供如下的SQL查询:

SELECT COUNT(*) AS count_all, gender AS gender FROM `users` GROUP BY `users`.`gender`

你会得到这样的哈希:

{ 'male' => 545, 'female' => 323 }

根据需要使用此项;)

UPD:如果您需要额外的过滤(例如注册或其他),只需添加额外的where子句。

UPD2:此解决方案用于获取当时的所有统计信息。如果您只想要一个特定性别的统计信息,则应在 JosephL 的答案中使用方法。

答案 1 :(得分:4)

假设您的模型User包含字段gender然后您可以将类方法添加到您的用户类。

class User < ActiveRecord::Base
  def self.total_males
    where(gender: 'male').count
  end
  def self.total_females
    where(gender: 'female').count
  end
end

然后在你看来

<%= User.total_males %> Male registered users
<%= User.total_females %> Female registered users

您还需要一个性别字段的索引来快速查询。您可以在迁移中添加索引。