¿Cómo se gestionan los datos que deben ser persistente en una base de datos, pero no es un modelo adecuado, en Ruby on Rails?
-
02-07-2019 - |
Pregunta
Imagine una aplicación web escrita en Ruby on Rails.Parte del estado de que la aplicación está representado en una parte de los datos que no se ajustan a la descripción de un modelo.Este estado descriptor debe ser persistente en la misma base de datos como la de los modelos.Donde difiere de un modelo es que no debe ser sólo una instancia de su clase y no tiene relaciones con otras clases.
Alguien ha encontrado nada como esto?
Solución
Por tu descripción creo que los rieles-configuración del plugin debe hacer lo que usted necesita.
Desde el Readme:
"Es un plugin que hace que la gestión de una tabla de clave global, los pares de valores de fácil.Piensa que es como un mundial de Hash almacenado en que la base de datos, que utiliza simples ActiveRecord como los métodos para la manipulación.Seguir la pista de la configuración global de que usted no desee duro código en tu aplicación rails.Usted puede almacenar cualquier tipo de objeto.Cadenas de caracteres, números, matrices o cualquier objeto."
Otros consejos
Si es de datos, y está en la base de datos, es parte de la modelo.
Esta no es realmente una RoR problema;es un general OO problema de diseño.
Si fuera yo, probablemente iba a encontrar una manera de conceptualizar los datos como un modelo y, a continuación, sólo tienes que hacer un singleton con un método de fábrica y un constructor privado.
Alternativamente, se podría pensar en esto como una forma de registro.En ese caso, sólo tendría un Registrador de clase (también un singleton) que lee/escribe directamente la base de datos y se invoca al principio y al final de cada solicitud.
En Rails, si los datos en la base de datos es en un modelo.En este caso, el modelo puede ser llamado "Configuración", pero aún está asignado a una clase ActiveRecord en su sistema de Rieles.
Si este tipo de datos es completamente estática, puede que no necesite la base de datos.Usted puede utilizar (como un ejemplo) es una variable en la aplicación del controlador:
class ApplicationController < ActionController::Base
helper :all
@data = "YOUR DATA HERE"
end
Hay una serie de enfoques que pueden ser utilizados para crear instancias de datos para su uso en una aplicación Rails.
No estoy seguro de entender por qué usted dice que no puede caber en una Rieles modelo.
Si sólo se trata de una compleja estructura de datos, sólo tienes que guardar un montón de código Ruby en un campo de texto en la base de datos :-)
Si por ejemplo usted tiene un anidada compleja hash desea guardar, asignar el siguiente a su 'datos' campo de texto:
ComplexThing.data = complex_hash.inspect
Cuando se desea leer de nuevo, simplemente
complex_hash = eval ComplexThing.data
Permítanme destacar 2 cosas más acerca de esta solución:
- Si la estructura de datos no es un estándar de Ruby clases, un simple inspeccionar no puede hacerlo.Si usted ve #<MyClass:0x4066e3c> en cualquier lugar, de que algo no está serializado correctamente.
- Este es un ingenuo aplicación.Puede que desee comprobar hacia fuera real dar soluciones si usted está en riesgo de tener datos unicode o si usted realmente ahorrar una gran cantidad de encargo de las clases.