I had the same problem and decided that fragment caching in the views was a better option.
The cache keys for the fragments are based on the models and will change every time a model is updated.
Here is an extract from one of my views in haml.
- @content_pages.each do |content_page|
- cache(content_page.get_cache_key('home_page_content_page')) do
...Render ContentPage model
It is based on an approach recommended by 37Signals here How key-based cache expiration works
I have a full write up of the approach on my website here
Rails caching strategy using key-based approach
Hope this helps