2009/10/3 Nelson Fernandez <[email protected]>

> Martin !
>
> 2009/10/2 Martin Aceto <[email protected]>
>
>> Hola, como estan
>>
>>
>> estoy tratando de extender activerecord para poder sacar de un modelo
>> logica que no pertenece a ese modelo sino que engloba varios modelos, logica
>> de negocio bastante complicada que desearia separar.
>>
>> Me encuentro con la pregunta de cual es la forma correcta de hacerlo ?
>>
>> Lo que pense fue crear un archivo en /lib y dentro definir esos metodos
>> que necesito, este ejemplo de abajo es correcto ? o estoy equivocado en mi
>> concepto ?
>>
>> module Test
>>   module ClassMethods
>>     def test
>>       puts "Test"
>>     end
>>   end
>> end
>>
>> ActiveRecord::Base.send(:extend, Test::ClassMethods)
>>
>>
>
> Comparto con Emanuel de usar la menos magia posible .. quizás otra solución
> simple sea usar mixins [1] ?.
>
> [1] http://www.rubycentral.com/pickaxe/tut_modules.html#S2
>
>
> --
> :: nelson ::
> [ artesano de software & software craftsman ]
> http://netflux.com.ar
>
>
>
>
Leí el enlace que mandaste Nelson, si es mas simple, esta bueno. Pero quiero
extender ActiveRecord para poder tener esos metodos en todas las clases,
estoy intentando hacer esto como dijo Emmanuel

module Test

  module ClassMethods

    def test
      puts "Test"
    end

  end

end

ActiveRecord::Base.extend, Test::ClassMethods
ActiveRecord::Base.class_eval do
  include Test::InstanceMethods
end

pero no me funciona, y no entiendo porque, pero si incluyo directamente en
una clase de esta manera

module Test

  module ClassMethods

    def test
      puts "Test"
    end

  end

end


class User < ActiveRecord::Base
 include Test::InstanceMethods
 extend Test::ClassMethods
end

funciona bien y tengo los metodos en la clase.

Que estoy haciendo mal para que el primer ejemplo no funcione ? alguna idea
?

Si sirve de algo es un app en Rails 2.3.2, el archivo esta en lib/test.rb

Martin
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a