Necesito recopilar y almacenar direcciones postales en una aplicación Rails (2.3). ¿Hay alguna forma de Rails para hacer direcciones de correo? Por ejemplo, haría f.date_select
para generar una serie de menús desplegables para manejar las fechas, que luego se almacenan en la base de datos, que definí en el esquema y las migraciones como t.datetime "foo"
. Considero que la forma canónica de Rails para manejar las fechas, y tengo curiosidad por saber si hay un análogo para direcciones físicas, códigos postales, etc.¿Cuál es la forma canónica de Rails para recopilar y almacenar direcciones físicas o postales?
Respuesta
No hay un sistema establecido o ayuda para esto, porque a diferencia del selector de fecha, que es más complicado de lo que parece, recopilar información de dirección es bastante sencillo. Sin embargo, si necesita recopilar información de dirección en su aplicación y adjuntarla a más de una cosa, puede usar una combinación de asociaciones polimórficas, atributos anidados y una vista compartida.
Doy un ejemplo básico y una explicación completa en mi blog aquí:
http://kconrails.com/2010/10/19/common-addresses-using-polymorphism-and-nested-attributes-in-rails/
Podría parecer intimidante al principio, pero en realidad es muy simple. El beneficio es que sus direcciones son uniformes en todas las vistas en su aplicación. Y cada objeto con una dirección tiene exactamente la misma configuración, incluso si cambia de dirección en el futuro.
Creo que esto es en definitiva lo que estabas buscando. ¡Espero que ayude!
Si planea asociar un modelo con datos de ubicación, la gema [geocoder] (https://github.com/alexreisner/geocoder) lo maneja bastante bien. – Archonic
+1! Esta publicación en el blog fue realmente útil para mí y fácil de leer. ¡Gracias por escribirlo y mantenerlo! No pude configurar el comportamiento polimórfico a través de los documentos de los rieles, pero esto me hizo rodar. –
No. Direcciones, códigos postales, etc ... simplemente se consideran como cadenas/enteros. No hay un tipo específico de base de datos para mapear estos elementos y tampoco hay clases específicas de rieles para estos elementos.
Tampoco estoy familiarizado con ninguna compatibilidad con ActiveSupport (una biblioteca utilizada por Rails) para las direcciones postales, pero podría estar equivocado aquí.
Es posible si busca gemas que pueda encontrar, que hace que operar con estos elementos sea más fácil.
Empecé a estudiar esto: las direcciones no son sencillas a nivel internacional. Hasta ahora he encontrado un par de gemas:
- Biggs puede formatear direcciones en más de 60 países. https://github.com/yolk/biggs
- JT-carriles de dirección incluye geo-codificación con Google Maps para autocompletar por: https://github.com/jonathantribouharet/jt-rails-address
- Geocoder maneja direcciones y búsqueda por proximidad: https://github.com/alexreisner/geocoder
Incluso si al final no utilice ninguna de estas joyas, podría valer la pena mirar cómo almacenan diferentes partes de la dirección. El consenso general es tener una tabla de direcciones polimórficas, pero hay algunas variaciones sobre qué columnas necesita tener.
Este artículo proporciona algunos ejemplos de las diferentes maneras en que puede manejar la forma de ser lo más específico o genérico como sea necesario entre los distintos países, menciona algunas de las inconsistencias que se puede encontrar en diferentes regiones (incluso dentro de un mismo país): http://www.uxmatters.com/mt/archives/2008/06/international-address-fields-in-web-forms.php
Por ejemplo, no desea que el código postal sea un campo obligatorio, ya que no todos los países tienen uno. Dependiendo de qué tan complejo desee ir, le conviene preguntar primero al país y tener diferentes formas dependiendo de la respuesta a esa pregunta.Hay una buena publicación en el blog sobre cómo evitar la ambigüedad, especialmente con respecto a los campos de dirección de línea1 y dirección2: https://baymard.com/blog/address-line-2
- 1. ¿Diferencia entre direcciones lógicas y direcciones físicas?
- 2. Analizador de direcciones postales Java
- 3. Expresión regular para analizar direcciones postales
- 4. ¿Cuál es la "mejor" forma de almacenar direcciones internacionales en una base de datos?
- 5. Asignación de direcciones físicas a la dirección virtual de Linux
- 6. direcciones virtuales y físicas de secciones en archivos elf
- 7. ¿Cuál es la implementación canónica del descuento?
- 8. La forma más eficiente de almacenar direcciones IP en MySQL
- 9. Guía de formatos de direcciones postales internacionales
- 10. ¿Cuál es la forma canónica de escribir una función hasher para TEqualityComparer.Construct?
- 11. forma canónica para matriz vacía en Scala?
- 12. Linux (Ubuntu), lenguaje C: Traducción de direcciones virtuales a físicas
- 13. En OCaml, ¿cuál es la forma canónica de comparar contra múltiples argumentos de una función?
- 14. ¿Cuál es la mejor forma de recopilar/informar errores inesperados en aplicaciones de ventana .NET?
- 15. ¿Cuál es la forma canónica de recortar una cadena en Ruby sin crear una nueva cadena?
- 16. ¿Cuál es la forma canónica de averiguar si un modelo de Django se guarda en db?
- 17. ¿Cómo se asignan las mismas direcciones virtuales para diferentes procesos a diferentes direcciones físicas?
- 18. ¿Cuál es la forma canónica de manejar diferentes tipos en Python?
- 19. ¿Cuál es la forma canónica de unir cadenas en una lista?
- 20. ¿Cuál es la forma más eficiente de almacenar y consultar árboles?
- 21. ¿Qué significa el término "forma canónica" o "representación canónica" en Java?
- 22. ¿Cuál es la mejor forma de almacenar la configuración del usuario para una aplicación .NET?
- 23. ¿Cuál es la mejor forma de almacenar y acceder a XML en Android?
- 24. La mejor manera de recopilar estadísticas de uso de la aplicación Rails
- 25. ¿Cuál es la forma oficial de almacenar la configuración de los programas de Python?
- 26. MySQL: ¿la mejor manera de almacenar direcciones MAC?
- 27. ¿Cuál es la mejor y más segura forma de almacenar las direcciones de correo electrónico de los usuarios en la base de datos?
- 28. ¿Cuál es la "forma de Rails" para manejar una gran cantidad de controladores?
- 29. ¿Cuál es la "mejor" implementación canónica de Equals() para los tipos de referencia?
- 30. ¿Cuál es la forma preferida de implementar configuraciones en una aplicación Ruby on Rails 3?
Lástima que no hay una buena joya para esto, incluso ahora. –