Friday, February 01, 2013

Rails SQL Caching


La forma en que funciona Rails SQL Caching es que las consultas se almacenan en caché durante la ejecución de una acción. Es importante observar que las memorias caché de consulta se crean en el inicio de una acción y son destruidas al final de esa acción y por lo tanto persiste sólo durante la ejecución de la acción.

Puede ser que no deseemos este comportamiento, imaginemos que queremos sacar un usuario de manera aleatoria. Con el sql caching siempre obtendríamos los mismos resultados...


User.find(:first, :order => "rand()") 



Si queremos evitar que durante la acción el resultado siempre sea el mismo debemos hacer lo siguiente:



class User < ActiveRecord::Base
  def self.usuario_aleatorio
    uncached do
      find(:first, :order => "rand()")
    end
  end
end



No comments:

Post a Comment