Sha256: 29a405c61a9f770e290bb9c80c1808d192c6f65c21cc4cd5cfbbcc9c0823b3ea
Contents?: true
Size: 757 Bytes
Versions: 12
Compression:
Stored size: 757 Bytes
Contents
# frozen_string_literal: true class CoordinateValidator < BaseValidator BOUNDARIES = { latitude: 90.0, longitude: 180.0 }.freeze def validate_each(record, attribute, value) assert_valid_boundary! super end private def assert_valid_boundary! assert_valid_option!(:boundary, BOUNDARIES.keys.push(:pair)) end def boundary options[:boundary] || :pair end def valid_attr? case boundary when :latitude then valid_boundary?(:latitude) when :longitude then valid_boundary?(:longitude) else valid_boundary?(:latitude, value.first) && valid_boundary?(:longitude, value.last) end end def valid_boundary?(key, coordinate = nil) (coordinate || value).to_f.abs <= BOUNDARIES[key] end end
Version data entries
12 entries across 12 versions & 1 rubygems