组上有奇怪的重复

时间:2011-07-19 01:15:15

标签: ruby-on-rails

有什么不对?任何帮助表示赞赏。

@entries = Entry.where(:created_at => 3.day.ago.beginning_of_day..Time.now.end_of_day).group("date(created_at)").select("created_at, count(id) as tcount")

<% @entries.each_with_index do |entry, index| %>
<%= entry.created_at.strftime("%d/%m") %>
<% end %>

输出:

16/07
16/07
18/07
19/07

1 个答案:

答案 0 :(得分:0)

当您选择记录时,它按数据库的date()函数进行分组,该函数使用实际存储在数据库中的内容,但您选择的是完整的created_at,包括时间。它选择第一个作为值。当您实际显示时区转换时,它们就会发挥作用。我敢打赌,这16个人中的一个应该是15岁。

尝试:

@entries = Entry.where(:created_at => 3.day.ago.beginning_of_day..Time.now.end_of_day).group("date(created_at)").select("date(created_at) as date, count(id) as tcount")

<% @entries.each_with_index do |entry, index| %>
<%= entry.date.strftime("%d/%m") %>
<% end %>