Emilio, lo que quería plasmar era algo así (pongo el caso práctico de una)
(con DataMapper):

class Operador
  include DataMapper::Resource
  property :id, Serial
  timestamps :at
  *has n, :tipo_de_servicios
*end

class TipoDeServicio
  include DataMapper::Resource
  property :id, Serial
  property :operador_id, Integer
  property :tipo, Discriminator
  property :nombre, String

  belongs_to :operador
end

class TipoDeHosting < TipoDeServicio
  property :quota, Integer
  # ...
end
class TipoDeConectividad < TipoDeServicio
  property :bw_upload, Integer
  # ...
end

Concretamente queríamos lograr que las instancias de *TipoDeHosting* no
tuvieran los métodos y ni conocieran a los métodos de *TipoDeConectividad*,
pero si compartieran los de *TipoDeServicio (el parent)*. Además debían
estar en la misma tabla para no tener problemas de eager loading. Hay un par
de razones más, pero no las recuerdo en este momento.

Escucho ofertas!

Lucas Florio
Developer
----
Personal: http://www.lucasefe.com.ar/


2009/7/16 Carlos Di Giacomo <[email protected]>

>
>
> 2009/7/14 Lucas Florio <[email protected]>
>
>> Buenas, Rubias
>>
>> Estoy teniendo el siguiente tema. Quiero implementar STI pero quiero
>> evitar que se muestren los campos/atributos que no corresponden a una clase
>> específica. El ejemplo sería este:
>>
>> class Componente < AR::Base
>>   # nombre: string
>> end
>>
>> class ComponenteUno < Componente
>>     # campo1
>> end
>>
>> class ComponenteDos < Componente
>>    # campo2
>>    # campo3
>> end
>>
>> La Tabla componentes contiene a todos los campos (nombre, campo(1..3)).
>> La idea es que ComponenteDos.new no responda a campo1.
>> Y que ComponenteUno no responda a campo2 ni a campo3.
>> Yo me había imagino un mixin de esta forma, pero no se si existe algo así
>> ya:
>>
>> class ComponenteDos < Componente
>>    properties :campo2, :campo3 # y que te oculte lo demás
>>    # Sé que con DataMapper seguramente lo pueda hacer, pero quería
>> intentarlo con AR antes.
>> end
>>
>
>
> Lucas, por curiosidad podrias dar un ejemplo en que casos se necesita
> manejar la composicion así?, nunca pense la herencia asi
>
> saludos
>
>
>>
>> Alguna idea? Saben de algo así?
>>
>> Desde ya muchas gracias
>>
>> Lucas Florio
>> Developer
>> ----
>> Personal: http://www.lucasefe.com.ar/
>>
>> _______________________________________________
>> Ruby mailing list
>> [email protected]
>> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>>
>>
>
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
>
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a