【问题标题】:get count of users for previous day week or month in ruby on rails在 ruby​​ on rails 中获取前一天一周或一个月的用户数
【发布时间】:2014-10-15 06:16:56
【问题描述】:

在我的 ruby​​ on rails 应用程序中,我想获取在我的应用程序中的前一天、一周和一个月内创建和删除帐户的用户数。基本上我想在一个中显示已创建帐户的用户一天(means from current hour to previous remaining hours),一周(means from current day to previous remaining days) 和一个月(means from current day to previous remaining days)

我正在尝试在下面使用:

# Controller
@users = User.all(:conditions => ["created_at >= ?", Date.today.at_beginning_of_month])

# View
Date.today.at_beginning_of_month.upto(Date.today).each do |date|
  <%= date %>: <%= @users.select{|u| u.created_at == date }.size %>
end

但它可以让我统计过去一个月每天的用户数。

【问题讨论】:

标签: ruby-on-rails


【解决方案1】:

我会尝试这样的:

例如,如果您想选择过去一小时内创建的用户:

  @date_start = DateTime.now
  @date_end = @date_start - 1.hour
  @users = User.where(:created_at => @date_end..@date_start)

【讨论】:

  • 我想计数,所以我添加了.count 像这样@users = User.where(:created_at =&gt; @date_end..@date_start).count。但它没有给我任何结果。
  • 它没有给我任何错误,但在我的视图页面中,在这一行Number of users who registered in last 24 hours: &lt;%= @users %&gt;,它没有显示任何计数值。
  • 您可以简单地在控制台中使用:puts @users 将其打印出来吗?结果如何?
  • 您是否在过去一小时内创建了用户?
  • 它的工作。谢谢,请建议我,我该如何为1 Week1 month 执行此操作。
【解决方案2】:

让我们先说这个:

@date = DateTime.now - 10.days
@users = User.all(:conditions => ['created_at > ?', @date]) // fetch all users created within last 10 days until now

然后,按日期分组:

@days = @users.group_by {|user| user.created_at.to_date }

那么您应该对这些分组的日期进行迭代并打印它们:

@days.each do |day, users|
    <%= day %>: <%= users.size %>
end

【讨论】:

    猜你喜欢
    • 2021-07-30
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 2011-02-25
    • 2014-10-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    相关资源
    最近更新 更多