Pull full date from group_by

Hello there,

I started with to_set.classify and have the find function grouping by
day. I then did a group_by function to the same effect both in the
model and the view.

They both work wonderfully except I need to pull the full date from it
not just the number of the day.

controller

@groups = Lineup.find(:all, :conditions => search_conditions, :limit
=> 400, :include => [{:event => :venue}, {:artist
=> :genre}, :artist]).to_set.classify {|lineup|
lineup.event.event_time.day}.sort

In the view I have two loops set to run through the day then the
lineups.

strftime will not work since it is a fix num but I need the month of
the day and the name of the day.

Any ideas? Thanks for your help!

Best,

Jackson

I have it pulling using a method that I created in the model.

  def day
    self.event.event_time.strftime("%B%d%A")
  end

That spits out the string that I require then I parse it with reg ex
and match.

In the view I have:

<% @groups.group_by(&:day).each do |day, lineups| %>

Now the problem is sorting. If I sort in the view, I'm sorting by
strings.

In the controller:

@groups = Lineup.find(:all, :conditions => search_conditions, :limit
=> 400, :include => [{:event => :venue}, {:artist
=> :genre}, :artist]).sort_by{|e| e.event.event_time}

I can sort by time but it only sorts the individual lineups, the group
by day seems to be unaffected.

Dates are fun...

Can anyone provide some direction?

Thanks,

Jackson

def day
    self.event.event_time.strftime("%y%j%d%B%A")
  end

This will sort by year to account for January then the day number.

I do have the same question, did you find any answer ?

thanks

Yeah,

Went well!

controller::

@groups = Lineup.find(:all, :conditions => search_conditions, :limit
=> 400, :include => [{:event => :venue}, {:artist
=> :genre}, :artist]).sort_by{|e| e.event.event_time}

model::

  def day
    self.event.event_time.strftime("%y%j%d%B%A")
  end

view::

<% @groups.group_by(&:day).sort.each do |day, lineups| %>

<%= day.match('((?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|
May>Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:t|ember)?|Oct(?:ober)?|
Nov(?:ember)?|Dec(?:ember)?))').to_s.upcase %>

<repeat with="&lineups.sort_by{|lineup| lineup.event.event_time}">

  <%= this.event.event_time.strftime("%I" + ":" + "%M%p") %>

</repeat>

<% end %>

The second repeat is hobo dryml but it should make sense.

The controller call sorts every return. The model's definition was
key. I had to find all by day using the strftime function but needed
more info than just the day number. I put month, day, day full name.
That was tough to sort because you trade in the datetime class for a
string, I added year then day of the year so the records would come
back in order. The view I pulled the substrings using regex matches.
(http://txt2re.com/)

I hope this helps. Let me know if you have any questions, I'll see
what I can do.

Best,

Jackson