| Class | Journalist |
| In: |
app/models/journalist.rb
|
| Parent: | User |
Clase para los usuarios de tipo "Periodista". Es subclase de User, por lo que su tabla es users
| normas_de_uso | [RW] |
Genera un password aleatorio snippets.dzone.com/posts/show/2137
# File app/models/journalist.rb, line 21
21: def self.random_password(size = 5)
22: chars = (('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a) - %w(i o 0 1 l 0 I O)
23: (1..size).collect{|a| chars[rand(chars.size)] }.join
24: end
Indica si el usuario puede crear contenidos de tipo doc_type Los tipos de contenido disponibles se pueden consultar en Permission
# File app/models/journalist.rb, line 37
37: def can_create?(doc_type)
38: doc_type.eql?("comments")
39: end
I have to override this method because has_many :through does not call destroy on subscriptions, and I need it to delete the pending event alerts
# File app/models/journalist.rb, line 46
46: def department_ids=(new_dept_ids)
47: new_dept_ids.collect!(&:to_i)
48: old_dept_ids = self.department_ids.dup
49: existing_department_ids = old_dept_ids & new_dept_ids
50: dept_ids_to_remove = old_dept_ids - existing_department_ids
51: dept_ids_to_add = new_dept_ids - existing_department_ids
52: self.subscriptions.find_all_by_department_id(dept_ids_to_remove).each {|s| s.destroy}
53: dept_ids_to_add.each {|d| self.subscriptions.build(:department_id => d)}
54: end
Devuelve un array con los departamentos y organismos a los que está suscrito
# File app/models/journalist.rb, line 27
27: def organization_ids
28: o_ids = []
29: self.departments.each do |dept|
30: o_ids = o_ids + [dept.id]+dept.organization_ids
31: end
32: o_ids
33: end
# File app/models/journalist.rb, line 57
57: def save_departments
58: self.subscriptions.each {|s| s.save}
59: end
# File app/models/journalist.rb, line 41
41: def validate
42: errors.add(:department_ids, "no puede estar vacío") if self.subscriptions.length == 0
43: end
# File app/models/journalist.rb, line 92
92: def delete_pending_alerts_if_required
93: if self.has_event_alerts
94: true
95: else
96: # Fixme: I cannot use this because it generates spammable_type='User' instead
97: # of spammable_type='Journalist'
98: # self.event_alerts.unsent.each {|alert| alert.destroy}
99:
100: EventAlert.unsent.find(:all, :conditions => "spammable_id=#{self.id} AND spammable_type='Journalist'").each {|alert| alert.destroy}
101: end
102: end
Vacia los campos irrelevantes para este tipo de usuario. Se llama desde before_save
# File app/models/journalist.rb, line 65
65: def empty_unnecessary_fields
66: self.department_id = nil
67: self.stream_flow_ids = []
68: self.raw_location = nil
69: self.lat = nil
70: self.lng = nil
71: self.city = nil
72: self.state = nil
73: self.country_code = nil
74: self.zip = nil
75: self.photo_file_name = nil
76: self.photo_content_type = nil
77: self.photo_file_size = nil
78: self.photo_updated_at = nil
79: end
# File app/models/journalist.rb, line 87
87: def enable_event_alerts
88: self.has_event_alerts = true
89: self.alerts_locale = I18n.locale if self.alerts_locale.nil?
90: end