cache_key consults updated_on timestamp if present

See gh-9033 for additional discussion.

I noticed that the cache_key is hardcoded to updated_at, and didn't consult updated_on which is a supported timestamp column.

I have 3 immediate concerns about this patch:

1.  Is it safe to cast all time/date possibilities with `#to_time` for the comparison
2.  It looks like an enumerable trainwreck
3.  Is the schema change safe?

/cc @senny