En mi base de datos, tengo un modelo que tiene un campo que debe seleccionarse de una lista de opciones. Como ejemplo, considere un modelo que necesita almacenar una medida, como 5 pies o 13 cm o 12.24 m3. La forma obvia de lograr esto es tener un campo decimal y luego otro campo para almacenar la unidad de medida.¿La mejor manera de almacenar constantes a las que se hace referencia en la base de datos?
¿Cuál es la mejor manera de almacenar la unidad de medida? He usado un par de enfoques en el pasado:
1) Almacenando las diversas opciones en otra tabla DB (y modelo asociado), y uniendo las dos con una clave foránea estándar (y generalmente ansioso por cargar el modelo asociado) . Esto parece exagerado, ya que está obligando al DB a realizar un join en cada consulta.
2) Almacenando las opciones como un Hash constante, cargado en uno de los inicializadores, donde la clave en el Hash se almacena en el campo de unidad de medida. De esta forma, efectivamente se unirá a Ruby (que puede o no ser un aumento en el rendimiento), pero se pierde la posibilidad de realizar consultas desde el lado de "unidad de medida". Esto no sería un problema siempre que no sea probable que deba hacer consultas como "buscar todas las medidas con unidades de cm".
Ninguno de estos me parece especialmente elegante ... ¿alguien puede sugerir algo mejor?