2010-10-20 11 views
6

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?

+0

Lástima que no hay una buena joya para esto, incluso ahora. –

Respuesta

6

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!

+0

Si planea asociar un modelo con datos de ubicación, la gema [geocoder] (https://github.com/alexreisner/geocoder) lo maneja bastante bien. – Archonic

+0

+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. –

2

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.

1

Empecé a estudiar esto: las direcciones no son sencillas a nivel internacional. Hasta ahora he encontrado un par de gemas:

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

Cuestiones relacionadas