| Class | Comment |
| In: |
app/models/comment.rb
|
| Parent: | ActiveRecord::Base |
Clase para los comentarios en cualquiera de los recursos disponibles: noticias, propuestas, videos…
Indica si un comentario ha sido denunciado
# File app/models/comment.rb, line 38
38: def abused?
39: status.eql?('denunciado')
40: end
Indica si un comentario está aprobado
# File app/models/comment.rb, line 18
18: def approved?
19: status.eql?('aprobado') || status.eql?('aprobado tras denuncia')
20: end
Devuelve el nombre del autor del comentario
# File app/models/comment.rb, line 87
87: def author_name
88: self.name || self.user.public_name
89: end
Marca el comentario como no-spam, comunicándoselo a Akismet
# File app/models/comment.rb, line 80
80: def mark_as_ham!
81: update_attribute(:status, 'aprobado')
82: Akismetor.submit_ham(akismet_attributes)
83: end
Marca el comentario como spam, comunicándoselo a Akismet
# File app/models/comment.rb, line 74
74: def mark_as_spam!
75: update_attribute(:status, 'spam')
76: Akismetor.submit_spam(akismet_attributes)
77: end
Indica si un comentario está pendiente de aprobación
# File app/models/comment.rb, line 33
33: def pending?
34: status.eql?('pendiente')
35: end
Indica si un comentario está rechazado
# File app/models/comment.rb, line 23
23: def rejected?
24: status.eql?('rechazado')
25: end
Indica si un comentario es spam
# File app/models/comment.rb, line 28
28: def spam?
29: status.eql?('spam')
30: end
Indica si ha sido redirigido a Zuzenean
# File app/models/comment.rb, line 92
92: def zforwarded?
93: !zforwarded_at.nil?
94: end
Aprueba automáticamente el comentario, si es que lo ha hecho un usuario miembro del "staff". Se llama desde before_create
# File app/models/comment.rb, line 126
126: def approve_if_official_commenter
127: if self.user_id
128: if User.find(self.user_id).is_official_commenter?
129: self.status = 'aprobado'
130: end
131: end
132: end
Marca el comentario como "denunciado", y por tanto desaparece de la web, cuando ha habido 5 denuncias o más. Se llama desde before_save.
# File app/models/comment.rb, line 136
136: def check_abuse_counter
137: if self.abuse_counter >= 5 && !self.status.eql?('aprobado tras denuncia')
138: self.status = 'denunciado'
139: end
140: end
Envía el comentario a Akismet, quien determina si es spam o no
# File app/models/comment.rb, line 143
143: def check_for_spam
144: if RAILS_ENV.eql?("production") && Akismetor.spam?(akismet_attributes)
145: self.status = 'spam'
146: else
147: return true
148: end
149: end
El valor por defecto del campo "url" en el formuario es "http://". No es una URL válida, por lo que si se deja asi se vacía. Se llama before_validation
# File app/models/comment.rb, line 114
114: def nullify_url_if_necessary
115: self.url = nil if self.url.eql?("http://")
116: end
Especifica el idioma del comentario a partir del idioma en el que navega el comentarista, para poder mostrar en cada idioma sólo los comentarios en ese mismo idioma.
# File app/models/comment.rb, line 120
120: def set_comment_locale
121: self.locale = I18n.locale
122: end
Copia el nombre, el email y la url del comentarista de los datos de usuario. Se llama en before_validation. Hay dos casos especiales:
# File app/models/comment.rb, line 104
104: def set_user_name_and_email
105: if user
106: self.name = self.user.public_name if self.name.blank?
107: self.email = self.user.email
108: self.url = self.user.url
109: end
110: end