2013-02-11 15 views
5

Posiadam atrybuty Ruby on Rails Camping z atrybutami #latitude i #longitude.Sprawdzanie szerokości i szerokości geograficznej

To powinno zostać skasowane. Musi być zatwierdzony, aby:

  • Wartości są poprawnie sformatowane. Na przykład. 48,8582 i 2,2945, ale także 48,8 i 2,2. Każda precyzja powinna być dozwolona. Przechowuję je jako Float, czy wymagana jest dodatkowa walidacja lub zalecana?
  • Są w prawidłowych zakresach (0-90). A może powinienem zezwolić na liczby ujemne lub liczby powyżej i poniżej 90?

Nie jestem zainteresowany tym, czy w tym punkcie jest prawdziwy aktualny adres (morze, północny-ptaszek, cokolwiek, o ile jest to ważny punkt na ziemi).

Używam klejnotu geocoder, ale na razie dane wejściowe to po prostu para pól tekstowych lat/lon. Geokoder jest jedynie przedmiotem zainteresowania dla tego pytania, ponieważ może mieć narzędzia (które nie mogę znaleźć) do sprawdzenia poprawności pary długiej/długiej.

Odpowiedz

19

Nie jestem świadom wszelkich metod geocoder aby sprawdzić, ale może po prostu użyć szyn walidacji

validates :latitude , numericality: { greater_than_or_equal_to: -90, less_than_or_equal_to: 90 } 
validates :longitude, numericality: { greater_than_or_equal_to: -180, less_than_or_equal_to: 180 } 
0

w szynach 4 i większych, prawidłowa odpowiedź będzie:

validates :lat, numericality: { greater_than_or_equal_to: -90, \ 
    less_than_or_equal_to: 90 } 
validates :lng, numericality: { greater_than_or_equal_to: -180, \ 
    less_than_or_equal_to: 180 } 
Powiązane problemy