Database observer?

I’m creating an ebay-style auction application. I need a way to expire
the lots once their end time has passed.

The only way I can see to do it is through a cron job - every minute or
two, run a rails script which queries the database and finds any lots
that have expired buy haven’t been ‘marked’ as closed. Of course, the
instant a lot expires, it’s no longer available for bidding.

This seems really clunky and hackish, but I can’t see any way to
‘Observe’ the database.

Anyone have any ideas?