ruby-on-rails ruby activerecord casting single-table-inheritance

ruby on rails - ¿Cómo convertir un objeto ActiveRecord a otra clase cuando se usa STI?



ruby-on-rails casting (3)

Cree una nueva instancia de B para establecer los valores de los atributos que comparte con A.

Algo como:

class C < ActiveRecord::Base end class A < C end class B < C end @a = A.new(...) @b = B.new(@a.attr1, @a.attr2, ..., @a.attrN)

Actualmente estoy usando la herencia de tabla única de ActiveRecord.

¿Cómo puedo elegir uno de mis modelos del tipo A al B? Ellos tienen el mismo padre.


No es necesario que realice el lanzamiento, ya que Ruby no realiza ningún tipo de comprobación en tiempo de compilación. ¿Qué está tratando de lograr?

Digamos que tienes una clase de Dad , y las clases de niños son Daughter e Daughter .

Podrías tener una @dad variable y almacenar en ella un objeto Son o Daughter , y simplemente tratarlo como si fuera un Dad . Siempre y cuando respondan a los mismos métodos, no hay diferencia. Este es un concepto llamado "pato escribiendo".