我正在尝试抓住按日期分组的所有事件的哈希值,因此它有[y-m-d] => “event.title”或类似的东西。
以下是我尝试但似乎无效的一些事情:
@events = Event.all
@events_by_date = @events.group_by{ |e| e.created_at.beginning_of_month }
#&:day)
#&:created_at).day
#&:edate)
#.group_by(&:group_by_criteria).map {|k,v| [k, v.length]}.sort
#.group("date_format(created_at, '%Y%m%d %H')").count
我在模型中尝试过这样的东西:
def group_by_criteria
created_at.to_date.to_s(:db)
end
def day
where(created_at.strftime('%Y-%W-%D')
end
有人可以帮我学习如何从数据库中获取哈希值吗?
顺便说一句,这有效:events.group_by(&:created_at)
但它说:
并不是按日期和时间对它进行分组?我只是希望按年,月份分组,不包括剩余的时间戳。
答案 0 :(得分:1)
如果您想按日期将事件分组,您想要的是:
Event.all.group_by(&:created_date)
这是您添加到活动模型的方法:
def created_date
self.created_at.to_date
end
记住events
是一个事件模型的集合,它没有created_at
方法,只有该集合的各个元素。 group_by
方法评估每个元素的方法调用。