Ruby / Rails - ¿Accede a una tabla de "búsqueda" sin modelarla?

Esto es para un proyecto Ruby on Rails 3.0.x.

Tengo una tabla de "búsqueda" con datos de un proveedor.

Cuando importo datos de otra fuente, quiero consultar esta tabla (unirme en un SKU) para obtener datos adicionales.

No me parece correcto crear un modelo para esta tabla en mi aplicación. Mi aplicación nunca cambiará los datos y no necesita tener ninguna asociación de modelo más allá de la búsqueda de datos que acabo de mencionar. Solo se accede ocasionalmente para verificar información.

¿Cuál es la mejor práctica para acceder a esta tabla?

Gracias.

preguntado el 08 de noviembre de 11 a las 15:11

3 Respuestas

No hay nada de malo en crear un modelo a su alrededor, pero si desea evitarlo, tendrá que enviar consultas SQL sin procesar a la base de datos para recuperar los datos como alternativa.

Consultas sin procesar: Ejemplo de SQL sin formato de Rails

Por otro lado, creo que la motivación para envolver un modelo a su alrededor va más allá de si se quiere modificar o no. Definitivamente tengo aplicaciones que tienen modelos alrededor de tablas que nunca cambian (es decir, una lista de terminología específica de la aplicación, una lista de ciudades / estados y otros datos estáticos que se importan una vez y nunca se modifican). ActiveRecord también incluirá las columnas en métodos de fácil acceso, para que pueda leer esos datos fácilmente, sin mencionar todos los métodos convenientes relacionados con la clasificación, la búsqueda, etc.

contestado el 23 de mayo de 17 a las 13:05

Otra opción es almacenarlo en un YML y luego cargar ese YML en una constante en su archivo environment.rb.

Me gusta:

 LOOK_UP_TABLE = YAML.load_file("#{RAILS_ROOT}/misc/vendor_data.yml")

respondido 08 nov., 11:19

¿Por qué no parece correcto crear un modelo para ... un modelo? Si está en la base de datos, no hay razón para no tener un modelo.

Es posible que desee restringir su resource definición, o no mapearlo en absoluto, para evitar el acceso. Dicho esto, es probable que desee poder actualizarlo: una interfaz web es una forma fácil de hacerlo, ya sea impulsada por archivos o por usuarios.

Otras opciones incluyen cargarlo desde un archivo de configuración (Yaml, XML, específico del proveedor), recuperarlo de un servicio, etc. Esas soluciones pueden ser independientes o también aprovechar un enfoque respaldado por un modelo.

respondido 08 nov., 11:20

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.