Sha256: 97b82d78c97d900f0eaef60e98ae93e38258aed40f1435ea15732318f9672067

Contents?: true

Size: 777 Bytes

Versions: 4

Compression:

Stored size: 777 Bytes

Contents

# coding: utf-8
# frozen_string_literal: true
# This validator takes care of ensuring the validated content is
# an existing address and computes its coordinates.
class GeocodingValidator < ActiveModel::EachValidator
  def validate_each(record, attribute, value)
    if Decidim.geocoder.present? && record.feature.present?
      organization = record.feature.organization
      Geocoder.configure(Geocoder.config.merge(http_headers: { "Referer" => organization.host }))
      coordinates = Geocoder.coordinates(value)

      if coordinates.present?
        record.latitude = coordinates.first
        record.longitude = coordinates.last
      else
        record.errors.add(attribute, :invalid)
      end
    else
      record.errors.add(attribute, :invalid)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
decidim-core-0.1.0 app/validators/geocoding_validator.rb
decidim-core-0.0.8.1 app/validators/geocoding_validator.rb
decidim-core-0.0.7 app/validators/geocoding_validator.rb
decidim-core-0.0.6 app/validators/geocoding_validator.rb