Esto es más una cuestión de estilo, me pregunto qué hacen otras personas.Ruby Style Pregunta: almacenar hash constante con diferentes valores posibles
Digamos que tengo un campo en mi base de datos llamado "estado" para una publicación de blog. Y quiero que tenga varios valores posibles, como "borrador", "en espera de revisión" y "publicado", solo como un ejemplo.
Obviamente, no queremos "código duro" en estos valores mágicos cada vez, eso no sería SECO.
Así que lo que a veces lo que hago es algo como esto:
class Post
STATUS = {
:draft => "draft",
:awaiting_review => "awaiting review",
:posted => "posted"
}
...
end
Entonces puedo escribir código que hace referencia a ella más tarde como STATUS[:draft]
o Post::STATUS[:draft]
etc.
Esto funciona bien, pero hay algunas cosas No me gusta sobre eso
- Si usted tiene un error tipográfico y llamar algo así como
STATUS[:something_that_does_not_exist]
no generará un error, simplemente devuelve nulo, y puede llegar a establecer esto en la base de datos, etc antes de que usted nota un error - Se no se ve limpia o rubí-ish a escribir cosas como
if some_var == Post::STATUS[:draft]
...
no sé, algo me dice que hay una manera mejor, pero sólo quería ver lo que hacen los demás. ¡Gracias!
Nice John, thanks! –