10 lines
350 B
Ruby
10 lines
350 B
Ruby
|
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
|