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

empty_unnecessary_fields fill_lat_lng_data public_city set_pending_status slightly_modify_location

### Included Modules

Geokit::Geocoders

### Attributes

delete_photo | [R] |
normas_de_uso | [RW] |

### Public Instance methods

empty_unnecessary_fields()

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

fill_lat_lng_data()

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

public_city()

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

set_pending_status()

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

slightly_modify_location(lat, lng)

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]