In Rails, using "touch" to update timestamps on your models is awesome. For example when you want to implement <a href="http://37signals.com/svn/posts/3113-how-key-based-cache-expiration-works">key-based cache expiration</a>.
Just like updating, saving and creating models you can also use after_ and before_ callbacks for touch on your Rails models.
class Product < ActiveRecord::Base after_touch :update_cached_stock def combined_stock # Fetch some stock from various places that you can't # do in a simple SQL query. return my_combined_stock end private def update_cached_stock update_attribute(:cached_stock, self.combined_stock) end end
In an application we are developing, there are various things and related models that could influence a product's stock. (We import from a SAP database, but also process web orders and generate invoices).
Doing something like @product.touch in a background job which automatically updates stock so we can do Product.order(:cached_stock).paginate in a controller is awesome this way.