RoR: has_one "u otro"? (O, polimorfismo sin la herencia).

Hola a todos, tengo un requisito interesante para mi proyecto. necesito unhas_one relación donde es una clase u otra, pero sin herencia. Podría salirse con la herencia si es la única forma, pero los dos registros asociados tienen datos completamente diferentes y no están relacionados en absoluto.

Lo que necesito resolver es algo como lo siguiente.

# 1. Foo never belongs to anything.
# 2. Foo MUST have one assigned sub-record for validity.
# 3. Foo can only have either Bar or Baz assigned.
# 4. Bar and Baz have only ONE common property, and aren't
#    related in either data or implementation.

class Foo < ActiveRecord::Base
  # Attributes: id, name, value
  has_one :assignment, :foreign_key => 'assigned_to', :readonly => true
          # Could really use an :object_type for has_one here...
end

class Bar < ActiveRecord::Base
  # Attributes: name,...
end

class Baz < ActiveRecord::Base
  # Attributes: name,...
end

DóndeFoo tiene una asignación, de tipoBar oBaz; solo comparten una columna común, por lo que quizás pueda hacer un objeto padre a partir de eso. Sin embargo, si hago que hereden de un objeto común (cuando los datos que contienen realmente son naranjas y manzanas) ¿debo hacer una tabla para el registro? ¿Tal vez pueda salirse con la suya si el registro es un registro abstracto, pero los niños no lo son?

Supongo que ahora puedes ver mi dificultad. Soy bastante nuevo en RoR pero me encanta hasta ahora. Estoy seguro de que hay una forma de evitar esto, pero no me daré cuenta de qué se trata.

Respuestas a la pregunta(2)

Su respuesta a la pregunta