Module | FerretMethods
In: | app/models/ferret_methods.rb

Parámetros y métodos comunes para todos los recursos que deben ser indexados por Ferret para las búsquedas. Algunos métodos son sobreescritos en los correspondientes modelos, si no se ajustan a estas definiciones por defecto

### Methods

days_from_epoch_for_ferret place_for_ferret pretty_published_at_for_ferret published_at_for_ferret published_month_year_for_ferret speaker_for_ferret starts_at_in_agencia_for_ferret

### Constants

FERRET_DEFAULT_FIELDS | = | [:title_es_for_ferret, :title_eu_for_ferret, :title_en_for_ferret, :body_es_for_ferret, :body_eu_for_ferret, :body_en_for_ferret, :tags_for_ferret, :speaker_for_ferret, :place_for_ferret, :pretty_published_at_for_ferret] |  | Campos en los que se buscará al hacer una búsqueda
FERRET_PARAMS | = | {:single_index => true, :ferret => {:default_field => FERRET_DEFAULT_FIELDS}, :fields => {:title_es_for_ferret => {:boost => 10, :store => :yes}, :title_eu_for_ferret => {:boost => 10, :store => :yes}, :title_en_for_ferret => {:boost => 10, :store => :yes}, :body_es_for_ferret => {}, :body_eu_for_ferret => {}, :body_en_for_ferret => {}, :speaker_for_ferret => {:boost => 8}, :place_for_ferret => {:boost => 8}, :pretty_published_at_for_ferret => {:boost => 500}, :tags_for_ferret => {:boost => 6}, :show_in_agencia => {:index => :untokenized_omit_norms, :term_vector => :no}, :show_in_irekia => {:index => :untokenized_omit_norms, :term_vector => :no}, # Para mostrar solo las cosas publicadas (published_at > now) :published_at_for_ferret => {:index => :untokenized_omit_norms, :term_vector => :no}, # Para ordenar (mas preferencia los mas nuevos) :published_month_year_for_ferret => {:index => :untokenized_omit_norms, :term_vector => :no}, # En la agencia se pueden ver los eventos 3 dias antes de que empiecen :starts_at_in_agencia_for_ferret => {:index => :untokenized_omit_norms, :term_vector => :no}, :days_from_epoch_for_ferret => {:index => :untokenized_omit_norms, :term_vector => :no}}} |  | Parámetros para Ferret: campos indexados con sus pesos
LANGUAGES | = | ['es', 'eu', 'en'] |  | Idiomas disponibles

### Public Instance methods

days_from_epoch_for_ferret()

Días desde el 1 de marzo de 2009 hasta la fecha de publicacion. Se usa para dar prioridad en los resultados de busqueda a las noticias más recientes

[Source]

         # File app/models/ferret_methods.rb, line 123
    123:   def days_from_epoch_for_ferret
    124:     if self.respond_to?("published_at") && self.published_at
    125:       date = self.published_at.to_date
    126:     else
    127:       date = self.created_at.to_date
    128:     end
    129:     (date - Date.parse('2009-03-01')).to_s.to_i
    130:   end

place_for_ferret()

Lugar de un evento

[Source]

         # File app/models/ferret_methods.rb, line 99
     99:   def place_for_ferret
    100:     place = ""
    101:     unless (self.respond_to?("draft?") && self.draft?)
    102:       place << place.tildes if self.respond_to?("place") && !self.place.nil?
    103:       place << city.tildes if self.respond_to?("city") && !self.city.nil?
    104:     end
    105:     return place
    106:   end

pretty_published_at_for_ferret()

Fecha en formato de texto

[Source]

        # File app/models/ferret_methods.rb, line 86
    86:   def pretty_published_at_for_ferret
    87:     if (self.respond_to?("draft?") && self.draft?)
    88:       ""
    89:     else
    90:       if self.respond_to?("published_at") && self.published_at
    91:         LANGUAGES.inject("") {|str, l| str << "#{I18n.localize(self.published_at, :format => :long, :locale => l)} " }
    92:       else
    93:         LANGUAGES.inject("") {|str, l| str << "#{I18n.localize(self.created_at, :format => :long, :locale => l)} " }
    94:       end
    95:     end
    96:   end

published_at_for_ferret()

Fecha de publicación en formato YYYYMMDD

[Source]

        # File app/models/ferret_methods.rb, line 57
    57:   def published_at_for_ferret
    58:     if self.respond_to?("published_at") && self.published_at
    59:       self.published_at.to_s(:number)
    60:     else
    61:       self.created_at.to_s(:number)
    62:     end
    63:   end

published_month_year_for_ferret()

Fecha en formato YYYYMM. Se usa como campo para ordenar los resultados de la busqueda por fecha: Primero saldran las noticias del ultimo mes.

[Source]

        # File app/models/ferret_methods.rb, line 77
    77:   def published_month_year_for_ferret
    78:     if self.respond_to?("published_at") && self.published_at
    79:       self.published_at.strftime("%Y%m").to_i
    80:     else
    81:       self.created_at.strftime("%Y%m").to_i
    82:     end
    83:   end

speaker_for_ferret()

Quien presenta

[Source]

         # File app/models/ferret_methods.rb, line 109
    109:   def speaker_for_ferret
    110:     sff = []
    111:     unless (self.respond_to?("draft?") && self.draft?)
    112:       LANGUAGES.each do |l|
    113:         if self.respond_to?("speaker_#{l}") && !self.send("speaker_#{l}").nil?
    114:           sff << self.send("speaker_#{l}").tildes
    115:         end
    116:       end
    117:     end
    118:     sff.uniq.join(" ")
    119:   end

starts_at_in_agencia_for_ferret()

     Fecha de inicio en formato YYYYMMDD. Definido para los eventos, porque no deben mostrarse

los eventos programados para dentro de más de 3 días en la agencia

[Source]

        # File app/models/ferret_methods.rb, line 67
    67:   def starts_at_in_agencia_for_ferret
    68:     if self.respond_to?("published_at") && self.published_at
    69:       self.published_at.to_s(:number)
    70:     else
    71:       self.created_at.to_s(:number)
    72:     end
    73:   end

[Validate]