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?