Sorting records from multiple tables, on different fieldname


#1

Hello list,

I’ve got 3 tables containing what could loosely be called “events”
(but with totally different characteristics, which is why they’re in
different tables), and I want to present all the records from all 3
tables in date order in an “Upcoming events” view. To make it more
challenging, there’s multiple date fields in each of the 3 tables, so
I need to sort on the field “datecommitted” from the first table,
“datedue” from the 2nd table, and “reviewdate” from the 3rd table.

This is what’s known as an “unforeseen requirement”, otherwise known
as the “Actually, you know what would be great, and we should have
requested this up front…” request. Grrr!

Is there a reasonably elegant Rails-ish or Ruby-ish way to do this
(bearing in mind the different date fieldnames in each table), or
should I resort to something like:

@eventsA = A.find(:all)
@eventsB = B.find(:all)
@eventsC = C.find(:all)
@events_all = @eventsA.push(@eventsB).push(@eventsC)
@events_all.each do
|event|
try
# See if the datedue field exists in this record; rescue if not…
if event.datedue

which is really ugly?

Thanks in advance

Dave M.