Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在ruby 1.8.7中操作有序哈希_Ruby On Rails_Ruby_Hash - Fatal编程技术网

Ruby on rails 在ruby 1.8.7中操作有序哈希

Ruby on rails 在ruby 1.8.7中操作有序哈希,ruby-on-rails,ruby,hash,Ruby On Rails,Ruby,Hash,我有一个返回有序散列的查询 counts = VideoLog.count( :conditions =>["question_id = ? AND user_id = ? AND created_at >= ? AND created_at <= ? AND dashboard = ? AND watched = ?", video.id,current_user.id, @start_date, @end_date, "#{@dashboard}", 1],

我有一个返回有序散列的查询

counts = VideoLog.count(
    :conditions =>["question_id = ? AND user_id = ? AND created_at >= ? AND created_at <= ? AND dashboard = ? AND watched = ?", video.id,current_user.id, @start_date, @end_date, "#{@dashboard}", 1],
    :group      => "created_at"
  )

我想将它的索引修改为特定的时区,然后将它们转换为仅日期,然后对它们进行迭代,我该怎么做?

您没有指定要对重复的键执行什么操作,我假设您要对它们求和。因此:

h = {"Wed Nov 30 07:37:36 UTC 2011"=>1, "Fri Nov 18 11:01:05 UTC 2011"=>1, "Wed Nov 30 07:38:16 UTC 2011"=>1}

h.inject(Hash.new 0) do |res, pair|
  res[Time.parse(pair.first).in_time_zone("Europe/Paris").to_date] += pair.last; res
end
结果是

=> {Wed, 30 Nov 2011=>2, Fri, 18 Nov 2011=>1}

类似这样的方法会奏效:

counts.each do |key,value|
    key = Date.parse key.localtime("+12:00").to_s
    # do something
end
counts.each do |key,value|
    key = Date.parse key.localtime("+12:00").to_s
    # do something
end