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