Caching computations on ActiveRecords

I have arrived at the following idiom for caching certain expensive computations on ActiveRecord subclasses:

  def expensive     @expensive = hairy_database_query_or_something   end

  def reload     @expensive = nil     super   end

It works, but I'm vaguely unhappy about it. Is there a better way?