Avoiding repeated calls to the DB

If I put any ActiveRecord into the session, I get marshalling problems when the session is saved to the DB. Perhaps there is a place to store things in the session that *don't* get saved? Or a more general app-level caching mechanism?

The only built-in caching deals with caching the rendered output. Folks tend to use something like memcache to cache the actual models though. Look at acts_as_cached and cached_model:

acts_as_cached

cached_model