¿Dónde / cómo debo hacer la validación y las transformaciones en las entidades en el motor de aplicaciones de Google?

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

Pregunta

En Ruby on Rails, cada entidad modelo tiene un " validate_on_ algo " Método de enganche, que se llamará antes de que la entidad realmente permanezca en la base de datos. Me gustaría una funcionalidad similar en Google App Engine. Soy consciente de que puede hacer la validación de propiedades individuales pasándoles argumentos en sus declaraciones. Sin embargo, si deseo hacer más validación que eso, ¿hay algún lugar dentro de la declaración de clase modelo dentro de la cual puedo hacer eso?

También, en la misma línea, a veces una entidad necesita una modificación antes de que realmente permanezca en la base de datos. Es posible que deba modificar (transformar) la entidad justo antes de que se escriba en la base de datos. ¿Hay algún lugar en la declaración de clase de entidad que me permita hacerlo?

Soy consciente de que puedo poner estas transformaciones / validaciones fuera de la clase. Pero esto no parece ser un buen diseño OO. Realmente parece que debería haber métodos de gancho que se llamarían automáticamente en un modelo para este tipo de necesidades.

Entonces, mi pregunta es, ¿cuál es la forma más adecuada de manejar la validación y transformación de las entidades antes de que sean persistentes?

¿Fue útil?

Solución

La mejor respuesta depende de qué tipo de transformaciones necesita hacer. No hay métodos pre / post generalizados para los modelos, pero hay varias otras opciones:

  • Como mencionó, puede pasar funciones de validación a los constructores de clase de propiedad
  • Puede usar una clase de propiedad personalizada que genere valores mediante programación, como éste .
  • Puede modificar las entidades a medida que se almacenan en el nivel más bajo utilizando api call hooks .

Otros consejos

¿Está utilizando algún tipo de marco web encima del motor de aplicaciones sin formato de API? Rails es un framework de muy alto nivel. ¿Has mirado Django o cualquiera de los otros frameworks web? Es posible que encuentre que están más cerca de los rieles que las entidades de aplicaciones sin procesar.

Alternativamente, si quieres algo más bajo a nivel, mira este artículo en ganchos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top