class GeoJSONValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) begin RGeo::GeoJSON.decode(value.to_json, geo_factory: RGeo::Geographic.simple_mercator_factory) rescue RGeo::Error::InvalidGeometry record.errors[attribute] << (options[:message] || "n'est pas un GeoJSON valide") end end end