Class Comment
In: app/models/comment.rb
Parent: ActiveRecord::Base

Clase para los comentarios en cualquiera de los recursos disponibles: noticias, propuestas, videos…

Methods

Public Instance methods

Indica si un comentario ha sido denunciado

[Source]

    # File app/models/comment.rb, line 38
38:   def abused?
39:     status.eql?('denunciado')
40:   end

Indica si un comentario está aprobado

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

[Source]

    # File app/models/comment.rb, line 33
33:   def pending?
34:     status.eql?('pendiente')
35:   end

Indica si un comentario está rechazado

[Source]

    # File app/models/comment.rb, line 23
23:   def rejected?
24:     status.eql?('rechazado')
25:   end

Indica si un comentario es spam

[Source]

    # File app/models/comment.rb, line 28
28:   def spam?
29:     status.eql?('spam')
30:   end

Indica si ha sido redirigido a Zuzenean

[Source]

    # File app/models/comment.rb, line 92
92:   def zforwarded?
93:     !zforwarded_at.nil?
94:   end

Protected Instance methods

Aprueba automáticamente el comentario, si es que lo ha hecho un usuario miembro del "staff". Se llama desde before_create

[Source]

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

[Source]

     # 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

[Source]

     # 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

[Source]

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

[Source]

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

  • El comentario se ha importado automáticamente con Ubervu: en este caso el email es común para todos (sn@open.irekia.net) y el nombre es el nick de twitter
  • El comentarista se ha loggeado con las credenciales de Twitter, y por lo tanto no tenemos su email

[Source]

     # 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

[Validate]