[Ror-es] evaluar condiciones dinámicas

Sergio Gil Pérez de la Manga sgilperez at gmail.com
Thu May 3 15:40:28 GMT 2007


On 5/3/07, Eduardo Fernandez Corrales <eduardo.fernandez at gmail.com> wrote:
> Hola,
>
> Tengo una aplicación en la cual necesito obtener siempre los objetos
> en base a una condición dinámica, algo como esto:
>
> class Recinto < ActiveRecord::Base
>   has_many :sesiones, :conditions => [fecha > ?, Time.now]
>   has_many :espectaulos, :through => sesiones
> end
>
> El problema de hacerlo así es que la condición se fija en el momento
> de carga de la clase y luego no se vuelve a evaluar.
>
> He estado mirando la opción with_scope, así como algunos plugins que
> la usan pero siempre me encuentro con el mismo problema con las
> condiciones dinámicas.
>
> Supongo que siempre queda la alternativa de hacer un before_filter,
> evaluar la condición y pasarla, pero me parece farragoso.
>
> ¿Cual sería la forma más DRY de hacer ésto?

Yo haría algo así:

 class Recinto < ActiveRecord::Base
   has_many :sesiones
   has_many :espectaulos, :through => :sesiones

  def sesiones_futuras
    sesiones.find(:all, :conditions => ["fecha > ?", Time.now])
  end
 end

También tendrías que hacer algo parecido para los espectáculos, claro.

-- 
Sergio Gil Pérez de la Manga
e-mail > sgilperez at gmail.com
blog > http://www.lacoctelera.com/porras


More information about the Ror-es mailing list