Create a new hash from an existing table

I have an active record Times table with a date column and an hour
column. The hours are unique but the dates can have many hours. How
would I create a hash that mapped a date key to its hours? Something
like:

hours_per_date[‘2/14/2012’] => [‘6:00’, ‘8:00’, ‘11:00’, ‘2:00’]

Thanks

Hi!

Take a look at:

http://www.ruby-doc.org/core-1.9.3/Enumerable.html#method-i-group_by

and

http://www.ruby-doc.org/core-1.9.3/Enumerable.html#method-i-collect

I think they could help.

E.g:

hash = Time.all.collect { |t| [ t.date , t.hour ] }.group_by {
|date,hour|
date.strftime("%-m/%-d/%Y") }

I hope it works.

Regards,
Everaldo

On Sat, Feb 11, 2012 at 11:50 PM, Everaldo G.
[email protected]wrote:

I think they could help.

E.g:

hash = Time.all.collect { |t| [ t.date , t.hour ] }.group_by {
|date,hour| date.strftime("%-m/%-d/%Y") }

I forgot that after using group_by you will have to discard the date from
the hash values.

On 13 February 2012 07:00, edward michaels [email protected] wrote:

Thanks, your idea did help.

if I do:

date = <some_date>
reduce = Time.where(:date => date)

I think you might run into trouble using a class Time as this is
already a ruby class.

Colin

Thanks, your idea did help.

if I do:

date = <some_date>
reduce = Time.where(:date => date)
hour_on_date = reduce.collect {|x| x.hour}

Now I just need to figure out how to make <some_date> a hash key which
triggers the hour_on_date array value.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs