¿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?

StackOverflow https://stackoverflow.com/questions/114192

  •  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?

¿Fue útil?

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."

http://github.com/Squeegy/rails-settings/tree/master

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.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top