| 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
| delete_photo | [R] | |
| normas_de_uso | [RW] |
Vacia los campos irrelevantes para este tipo de usuario Se llama desde before_save
# 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
# 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
# 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
# File app/models/person.rb, line 40
40: def set_pending_status
41: self.status = "pendiente"
42: end
Para que los pinchos no aparezcan todos unos encima de otros
# 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