>
> 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