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

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

### Methods

abused? akismet_attributes approve_if_official_commenter approved? author_name check_abuse_counter check_for_spam mark_as_ham! mark_as_spam! nullify_url_if_necessary pending? rejected? set_comment_locale set_user_name_and_email spam? zforwarded?

### Public Instance methods

abused?()

Indica si un comentario ha sido denunciado

[Source]

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

akismet_attributes()

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

approve_if_official_commenter()

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

approved?()

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

author_name()

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

check_abuse_counter()

     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

check_for_spam()

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

mark_as_ham!()

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

mark_as_spam!()

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

nullify_url_if_necessary()

[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

pending?()

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

rejected?()

Indica si un comentario está rechazado

[Source]

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

set_comment_locale()

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

set_user_name_and_email()

     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

spam?()

Indica si un comentario es spam

[Source]

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

zforwarded?()

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]