On 5/18/07, Lautaro Bonetto <[EMAIL PROTECTED]> wrote:
> Listoo... !!
> Mil gracias. Ese MERGE no lo conocía y era lo que me faltaba para solucionar
> el problema. Gracias de nuevo.

;)

Ahora que lo pienso, habría que hacer algo más metaprogramático que quede así:

class Hora < ...
  finder_method :activas, :all, :conditions => {:fecha => DateTime.now}
end

(tendríamos el problema de que ese DateTime.now sería evaluado en el
momento de definición de la clase, pero lo podemos solucionar)

Mmm...

class ActiveRecord::Base
  class << self
    def finder_method(method_id, *args)
      self.class.class_eval <<-EOF
        def #{method_id}(options = {})
          find(#{args.first.inspect}, #{args.last.inspect}.merge(options))
        end
      EOF
    end
  end
end

Además acá lo que hice es dar vuelta el orden del merge. Agarro el
valor por default y a eso le hago el merge con el valor del argumento
(si no, el valor por default te pisa el tuyo).

Amo la metaprogramación :)
_______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a