2011-11-08 8 views
5

Esto es para un proyecto de Ruby on Rails 3.0.x.Ruby/Rails - ¿Accede a una tabla de "búsqueda" sin modelarla?

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

Cuando importo datos de otra fuente, deseo consultar esta tabla (unirme a una 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 es necesario que tenga asociaciones de modelos más allá de la búsqueda de datos que acabo de mencionar. De vez en cuando se accede para verificar si hay alguna información.

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

Gracias.

Respuesta

9

No hay problema en crear un modelo a su alrededor, pero si desea evitarlo, deberá enviar consultas SQL sin formato al DB para recuperar datos como alternativa.

consultas primas: Rails raw SQL example

Por otro lado, creo que la motivación para envolver alrededor de un modelo que va más allá de si está o no desea modificarlo. 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 cambian). ActiveRecord también ajustará las columnas en métodos de fácil acceso, para que pueda leer esos datos fácilmente, sin mencionar todos los métodos de conveniencia para ordenar, buscar, etc.

2

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

De esta manera:

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

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

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

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

Cuestiones relacionadas