[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