25 lines
710 B
Ruby
25 lines
710 B
Ruby
class Position < ActiveRecord::Base
|
|
validates :postal_code, presence: true
|
|
validate :geocoder_position_present
|
|
|
|
before_create :set_location_name
|
|
|
|
def set_location_name
|
|
state = geocoder_position.state || geocoder_position.province
|
|
|
|
self.location_name = [geocoder_position.city, state, geocoder_position.country].compact.join(", ")
|
|
self.latitude = geocoder_position.latitude
|
|
self.longitude = geocoder_position.longitude
|
|
end
|
|
|
|
protected
|
|
|
|
def geocoder_position_present
|
|
errors.add(:postal_code, "No coordinates found for postal_code #{postal_code}}") if geocoder_position.blank?
|
|
end
|
|
|
|
def geocoder_position
|
|
@geocoder_position ||= Geocoder.search(postal_code).first
|
|
end
|
|
end
|