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 37
37:   def abused?
38:     status.eql?('denunciado')
39:   end

Atributos necesarios para que Akismet determine si es spam

[Source]

     # File app/models/comment.rb, line 112
112:   def akismet_attributes
113:     {
114:       :key                  => '41e2384dc1ef',
115:       :blog                 => 'http://www.irekia.euskadi.net',
116:       :user_ip              => user_ip,
117:       :user_agent           => user_agent,
118:       :comment_author       => name,
119:       :comment_author_email => email,
120:       :comment_author_url   => url,
121:       :comment_content      => body
122:     }
123:   end

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 71
71:   def approve_if_official_commenter
72:     if self.user_id
73:       if User.find(self.user_id).is_official_commenter?
74:         self.status = 'aprobado'
75:       end
76:     end
77:   end

Indica si un comentario está aprobado

[Source]

    # File app/models/comment.rb, line 17
17:   def approved?
18:     status.eql?('aprobado') || status.eql?('aprobado tras denuncia')
19:   end

Devuelve el nombre del autor del comentario

[Source]

     # File app/models/comment.rb, line 139
139:   def author_name
140:     self.name || self.user.public_name
141:   end
 before_save :check_abuse_counter
 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 82
82:   def check_abuse_counter
83:     if self.abuse_counter >= 5 && !self.status.eql?('aprobado tras denuncia')
84:       self.status = 'denunciado'
85:     end
86:   end

Envía el comentario a Akismet, quien determina si es spam o no

[Source]

     # File app/models/comment.rb, line 99
 99:   def check_for_spam
100:     if RAILS_ENV.eql?("production") && Akismetor.spam?(akismet_attributes)
101:       self.status = 'spam'
102:     else
103:       return true
104:     end
105:   end

Marca el comentario como no-spam, comunicándoselo a Akismet

[Source]

     # File app/models/comment.rb, line 132
132:   def mark_as_ham!
133:     update_attribute(:status, 'aprobado')
134:     Akismetor.submit_ham(akismet_attributes)
135:   end

Marca el comentario como spam, comunicándoselo a Akismet

[Source]

     # File app/models/comment.rb, line 126
126:   def mark_as_spam!
127:     update_attribute(:status, 'spam')
128:     Akismetor.submit_spam(akismet_attributes)
129:   end

[Source]

    # File app/models/comment.rb, line 57
57:   def nullify_url_if_necessary
58:     self.url = nil if self.url.eql?("http://")
59:   end

Indica si un comentario está pendiente de aprobación

[Source]

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

Indica si un comentario está rechazado

[Source]

    # File app/models/comment.rb, line 22
22:   def rejected?
23:     status.eql?('rechazado')
24:   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 64
64:   def set_comment_locale
65:     self.locale = I18n.locale
66:   end
 Copia el nombre y el email del comentarista de los datos de usuario si el comentarista
 esta logueado y dichos campos son nulos para este comentario. Se llama en before_validation.
 Ya no tenemos comentarios anónimos así que, en principio,
 <tt>comment.name</tt> debería ser igual a <tt>comment.user.name</tt>

 (y lo mismo para email y url), pero como tenemos comentarios de Ubervu, tenemos un usuario común para todos ellos  y ponemos nombre diferente en cada comentario

[Source]

    # File app/models/comment.rb, line 48
48:   def set_user_name_and_email
49:     if self.user
50:       self.name = self.user.public_name if self.name.blank?
51:       self.email = self.user.email if self.email.blank?
52:       self.url = self.user.url if self.url.blank?
53:     end
54:   end

Indica si un comentario es spam

[Source]

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

Indica si ha sido redirigido a Zuzenean

[Source]

     # File app/models/comment.rb, line 144
144:   def zforwarded?
145:     !zforwarded_at.nil?
146:   end

[Validate]