Class | News
In: | app/models/news.rb
Parent: | Document

Clase para las Noticias. Es subclase de Document, por lo que usa la tabla `documents`

### Methods

check_only_one_featured disable_unnecessary_fields schedule_tweets set_and_create_multimedia_path

### Included Modules

DraftUtils::InstanceMethods

### Public Instance methods

check_only_one_featured()

Garantiza que solo habrá una noticia destacada en Irekia Se llama before_update

[Source]

        # File app/models/news.rb, line 81
    81:   def check_only_one_featured
    82:     Document.update_all("featured='f'") if featured && featured_changed?
    83:   end

disable_unnecessary_fields()

No todas las columnas de la tabla documents se utilizan en las noticias, por lo que nos aseguramos de que están vacías. Se llama desde before_save

[Source]

        # File app/models/news.rb, line 46
    46:   def disable_unnecessary_fields
    47:     self.starts_at = nil
    48:     self.ends_at = nil
    49:     self.place = nil
    50:     self.lat = nil
    51:     self.lng = nil
    52:     self.location_for_gmaps = nil
    53:     self.stream_flow_id = false
    54:     self.journalist_alert_version = 0
    55:     self.staff_alert_version = 0
    56:   end

schedule_tweets()

Programa el auto-tweeteo de las noticias publicadas en irekia, con fecha igual a la fecha de publicacion en la web Se llama desde before_save

[Source]

        # File app/models/news.rb, line 67
    67:   def schedule_tweets
    68:     # Primero borramos los tweets pendientes de este evento, por si ha cambiado la fecha
    69:     DocumentTweet.delete_all(["document_id= ? AND tweeted_at IS NULL", self.id])
    70:
    71:     Event::LANGUAGES.each do |l|
    72:       if self.published? && self.show_in_irekia? && self.translated_to?(l) && !DocumentTweet.exists?(:document_id => self.id, :tweet_locale => l)
    73:         self.tweets.build(:tweet_account => "irekia_news", :tweet_at => self.published_at, :tweet_locale => l)
    74:       end
    75:     end
    76:   end

set_and_create_multimedia_path()

Crea el directorio para los contenidos multimedia de esta noticia a partir de lo especificado en el parametro `multimedia_dir`. Se llama desde before_save

[Source]

        # File app/models/news.rb, line 17
    17:   def set_and_create_multimedia_path
    18:     if (self.new_record? && self.multimedia_dir.present?) || (self.multimedia_dir_changed? && self.multimedia_dir_was.blank? && self.multimedia_dir.present?)
    19:       # if m = self.multimedia_dir.match(/^(\d{4}\/\d{2}\/\d{2}\/)/)
    20:         self.multimedia_path = self.multimedia_dir.dup
    21:         self.multimedia_path << "/" unless self.multimedia_path.match(/\/$/)
    22:
    23:       # else
    24:       #   date = self.published_at ? self.published_at.to_date : Date.today
    25:       #   self.multimedia_path = "#{date.year}/#{date.strftime("%m")}/#{date.strftime("%d")}/#{self.multimedia_dir}/"
    26:       # end
    27:       m_path_array = self.multimedia_path.split('/')
    28:       FileUtils.mkdir_p(Document::MULTIMEDIA_PATH + (m_path_array + ["solo_irekia"]).join('/'))
    29:       logger.info "Creando directorio #{Document::MULTIMEDIA_PATH + (m_path_array + ['solo_irekia']).join('/')}"
    30:       FileUtils.mkdir_p(Document::MULTIMEDIA_PATH + (m_path_array + ["solo_agencia"]).join('/'))
    31:       if Document.exists?(:multimedia_path => self.multimedia_path)
    32:         self.errors.add(:multimedia_dir, I18n.t('activerecord.errors.messages.taken'))
    33:         return false
    34:       else
    35:         return self.multimedia_path
    36:       end
    37:     else
    38:       return true
    39:     end
    40:   end

[Validate]