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

Methods

Included Modules

Geokit::Geocoders

Attributes

normas_de_uso  [RW] 

Public Instance methods

Indica si el usuario puede crear contenidos de tipo doc_type Los tipos de contenido disponibles se pueden consultar en Permission

[Source]

    # 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.

[Source]

    # 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

Protected Instance methods

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

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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.

[Source]

    # 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

[Validate]