Class Person
In: app/models/person.rb
Parent: User

Clase para los usuarios de tipo "persona", los usuarios que se registran en Irekia para comentar. Es subclase de User, por lo que su tabla es users

Methods

Included Modules

Geokit::Geocoders

Attributes

delete_photo  [R] 
normas_de_uso  [RW] 

Public Instance methods

Vacia los campos irrelevantes para este tipo de usuario Se llama desde before_save

[Source]

    # File app/models/person.rb, line 67
67:   def empty_unnecessary_fields
68:     self.department_id = nil
69:     self.media = nil
70:     self.telephone = nil
71:   end

Coge y guarda las coordenadas geográficas, ciudad, etc de la persona. Se llama desde before_save

[Source]

    # File app/models/person.rb, line 47
47:   def fill_lat_lng_data
48:     if raw_location_changed?
49:       loc = MultiGeocoder.geocode("#{raw_location}, Spain")
50:       unless loc.success
51:         loc = MultiGeocoder.geocode(raw_location)
52:       end
53:     
54:       if loc.success
55:         self.lat, self.lng = slightly_modify_location(loc.lat, loc.lng)
56:         self.city = loc.city
57:         self.zip = loc.zip
58:         self.state = loc.state
59:         self.country_code = loc.country_code
60:       end
61:     end
62:   end

Devuelve la ciudad en la que vive

[Source]

    # File app/models/person.rb, line 27
27:   def public_city
28:     (raw_location.present? && raw_location.strip.match(/\d+/)) ? city : raw_location
29:   end

Las personas quedan en estado de "pendientes de aprobación" cuando se dan de alta. Se llama desde before_create

[Source]

    # File app/models/person.rb, line 40
40:   def set_pending_status
41:     self.status = "pendiente"
42:   end

Protected Instance methods

Para que los pinchos no aparezcan todos unos encima de otros

[Source]

    # File app/models/person.rb, line 76
76:   def slightly_modify_location(lat, lng)
77:     deviation = 0.0060
78:     
79:     lat_rand = rand * deviation
80:     lng_rand = rand * deviation
81: 
82:     lat_sign = rand < 0.5 ? -1 : 1
83:     lng_sign = rand < 0.5 ? -1 : 1
84:     
85:     new_lat = lat + (lat_sign * lat_rand)
86:     new_lng = lng + (lng_sign * lng_rand)
87:     
88:     return [new_lat, new_lng]
89:   end

[Validate]