Skip to content
Snippets Groups Projects
volume.rb 1.62 KiB
Newer Older
Arnaud Levy's avatar
Arnaud Levy committed
# == Schema Information
#
# Table name: research_journal_volumes
#
#  id                  :uuid             not null, primary key
Sébastien Gaya's avatar
Sébastien Gaya committed
#  cover_alt           :string
#  description         :text
Arnaud Levy's avatar
Arnaud Levy committed
#  keywords            :text
Arnaud Levy's avatar
Arnaud Levy committed
#  number              :integer
Arnaud Levy's avatar
Arnaud Levy committed
#  published_at        :date
Arnaud Levy's avatar
Arnaud Levy committed
#  title               :string
#  created_at          :datetime         not null
#  updated_at          :datetime         not null
#  research_journal_id :uuid             not null
#  university_id       :uuid             not null
#
# Indexes
#
#  index_research_journal_volumes_on_research_journal_id  (research_journal_id)
#  index_research_journal_volumes_on_university_id        (university_id)
#
# Foreign Keys
#
#  fk_rails_...  (research_journal_id => research_journals.id)
#  fk_rails_...  (university_id => universities.id)
#
class Research::Journal::Volume < ApplicationRecord
Arnaud Levy's avatar
Arnaud Levy committed
  include WithGit
pabois's avatar
pabois committed

pabois's avatar
pabois committed
  has_one_attached_deletable :cover
Arnaud Levy's avatar
Arnaud Levy committed

Arnaud Levy's avatar
Arnaud Levy committed
  belongs_to :university
  belongs_to :journal, foreign_key: :research_journal_id
Arnaud Levy's avatar
Arnaud Levy committed
  has_many :articles, foreign_key: :research_journal_volume_id
pabois's avatar
pabois committed
  has_many :websites, -> { distinct }, through: :journal
Arnaud Levy's avatar
Arnaud Levy committed
  has_many :researchers, through: :articles
Arnaud Levy's avatar
Arnaud Levy committed

  scope :ordered, -> { order(number: :desc, published_at: :desc) }

Arnaud Levy's avatar
Arnaud Levy committed
  def cover_path
    "/assets/img/volumes/#{id}#{cover.filename.extension_with_delimiter}"
  end

Arnaud Levy's avatar
Arnaud Levy committed
  def website
    journal.website
  end

Arnaud Levy's avatar
Arnaud Levy committed
  def git_path_static
    "content/volumes/#{published_at.year}/#{published_at.strftime "%Y-%m-%d"}-#{slug}.html" if published_at
Arnaud Levy's avatar
Arnaud Levy committed
  end

  def git_dependencies_static
    articles + researchers
  end

Arnaud Levy's avatar
Arnaud Levy committed
  def to_s
Arnaud Levy's avatar
Arnaud Levy committed
    "##{ number } #{ title }"
Arnaud Levy's avatar
Arnaud Levy committed
  end
end