Creo que mi pregunta se describe mejor como un ejemplo. Digamos que tengo un modelo simple llamado "Cosa" y tiene algunos atributos que son tipos de datos simples. Algo como ...¿Mejores prácticas para asociaciones múltiples con la misma clase en Rails?
Thing
- foo:string
- goo:string
- bar:int
Eso no es difícil. La tabla db contendrá tres columnas con esos tres atributos y puedo acceder a ellos con algo como @ thing.foo o @ thing.bar.
Pero el problema que estoy tratando de resolver es ¿qué sucede cuando "foo" o "goo" ya no se pueden contener en un tipo de datos simple? Supongamos que foo y goo representan el mismo tipo de objeto. Es decir, ambas son instancias de "Whazit" solo con datos diferentes. Así que ahora cosa podría tener este aspecto ...
Thing
- bar:int
Pero ahora hay un nuevo modelo llamado "Whazit" que tiene este aspecto ...
Whazit
- content:string
- value:int
- thing_id:int
Hasta ahora todo esto es bueno. Ahora aquí es donde estoy atascado. Si tengo @thing, ¿cómo puedo configurarlo para referirme a mis 2 instancias de Whazit por nombre (para el registro, la "regla de negocios" es que cualquier Cosa siempre tendrá exactamente 2 Whazits)? Es decir, necesito saber si el Whazit que tengo es básicamente foo o goo. Obviamente, no puedo hacer @ thing.foo en la configuración actual, pero sería ideal.
Mi primer pensamiento es agregar un atributo de "nombre" a Whazit para que pueda obtener los Whatzits asociados con mi @thing y luego elegir el Whazit que quiero por su nombre de esa manera. Eso parece feo sin embargo.
¿Hay una manera mejor?