Hola gente, he usado bastante STI [1] pero he llegado a una
conclusion, si tengo:
class Contacto < ActiveRecord::Base; end;
class Persona < Contacto; end;
Y hago:
Contacto.new :type => ‘Persona’
Me gustaria que me devolviera un objeto Persona y no Contacto. Como lo
haria despues de que lo insertara en la base de datos y lo buscara
como Persona.
Entonces llegue a esta solucion:
http://pastie.caboo.se/99149
Con poner eso dentro de clase Contacto.
Contacto.new :type => ‘Persona’ # => devuelve objeto Persona
Espero que se haya entendido, acepto feedback e ideas sobre que les
parece tanto la implementacion como la idea (desde ya gracias
Sebastian).
Tambien deje algo en mi triste blog [2].
Saludos!
[1] http://wiki.rubyonrails.org/rails/pages/SingleTableInheritance
[2] http://miloops.blogspot.com/
No me termina de quedar claro por que’ necesitas hacer eso. ?Es para
instanciar objetos de diferentes clases de manera dina’mica?
Emilio T. escribio’:
Me gustaria que me devolviera un objeto Persona y no Contacto. Como lo
Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es
–
/**
On 9/21/07, Borja Martín [email protected] wrote:
No me termina de quedar claro por que’ necesitas hacer eso. ?Es para
instanciar objetos de diferentes clases de manera dina’mica?
No de cualquier clase, de las que heredan de la superclase.
Si vos haces:
Contacto.new :type => ‘Persona’, :name => ‘Pepe’
Y queres tener el objeto de ese como Persona tenes que hacer.
Persona.find_by_name(‘Pepe’)
Yo me ahorro buscarlo en la base de datos y hasta tal vez nunca este
en la base de datos.