No Rails, usar “touch” para atualizar timestamps em seus modelos é incrível. Por exemplo, quando você deseja implementar <a href=” http://37signals.com/svn/posts/3113-how-key-based-cache-expiration-works”> expiração de cache baseada em chave </a>.
Assim como atualizar, salvar e criar modelos, você também pode usar callbacks after_ e before_ para toque em seus modelos Rails.
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
Em um aplicativo que estamos desenvolvendo, existem várias coisas e modelos relacionados que podem influenciar o estoque de um produto. (Importamos de um banco de dados SAP, mas também processamos pedidos pela web e geramos faturas).
Fazer algo como @ product.touch em um trabalho em segundo plano que atualiza automaticamente o estoque para que possamos fazer Product.order (: cached_stock) .paginate em um controlador é incrível dessa forma.