| Class | Person |
| In: |
app/models/person.rb
|
| Parent: | User |
Clase para los usuarios de tipo "persona", los usuarios que se registran en OpenIrekia para comentar. Es subclase de User, por lo que su tabla es users
| normas_de_uso | [RW] |
Indica si el usuario puede crear contenidos de tipo doc_type Los tipos de contenido disponibles se pueden consultar en Permission
# File app/models/person.rb, line 28
28: def can_create?(doc_type)
29: doc_type.eql?("comments")
30: end
Devuelve la ciudad en la que vive.
# File app/models/person.rb, line 18
18: def public_city
19: (raw_location.present? && raw_location.strip.match(/\d+/)) ? city : raw_location
20: end
Vacia los campos irrelevantes para este tipo de usuario. Se llama desde before_save
# File app/models/person.rb, line 61
61: def empty_unnecessary_fields
62: self.department_id = nil
63: self.media = nil
64: self.telephone = nil
65: self.organization = nil
66: self.photo_file_name = nil
67: self.photo_content_type = nil
68: self.photo_file_size = nil
69: self.photo_updated_at = nil
70: self.stream_flow_ids = []
71: end
Coge de Google las coordenadas geográficas, ciudad, etc de la persona y las guarda. Se llama desde before_save
# File app/models/person.rb, line 42
42: def fill_lat_lng_data
43: if raw_location_changed?
44: loc = MultiGeocoder.geocode("#{raw_location}, Spain")
45: unless loc.success
46: loc = MultiGeocoder.geocode(raw_location)
47: end
48:
49: if loc.success
50: self.lat, self.lng = slightly_modify_location(loc.lat, loc.lng)
51: self.city = loc.city
52: self.zip = loc.zip
53: self.state = loc.state
54: self.country_code = loc.country_code
55: end
56: end
57: 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 36
36: def set_pending_status
37: self.status = "pendiente" unless is_twitter_user?
38: end
Modifica ligeramente la posición que devuelve Google Maps para la localidad de este usuario para que los pinchos no aparezcan todos unos encima de otros.
# File app/models/person.rb, line 75
75: def slightly_modify_location(lat, lng)
76: deviation = 0.0060
77:
78: lat_rand = rand * deviation
79: lng_rand = rand * deviation
80:
81: lat_sign = rand < 0.5 ? -1 : 1
82: lng_sign = rand < 0.5 ? -1 : 1
83:
84: new_lat = lat + (lat_sign * lat_rand)
85: new_lng = lng + (lng_sign * lng_rand)
86:
87: return [new_lat, new_lng]
88: end