如何从数据库表中获取哈希

时间:2014-10-07 15:27:59

标签: mysql ruby-on-rails-4 hash group-by

我正在尝试抓住按日期分组的所有事件的哈希值,因此它有[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)

但它说:enter image description here

并不是按日期和时间对它进行分组?我只是希望按年,月份分组,不包括剩余的时间戳。

1 个答案:

答案 0 :(得分:1)

如果您想按日期将事件分组,您想要的是:

Event.all.group_by(&:created_date)

这是您添加到活动模型的方法:

def created_date
  self.created_at.to_date
end

记住events是一个事件模型的集合,它没有created_at方法,只有该集合的各个元素。 group_by方法评估每个元素的方法调用。