Skip to content
Snippets Groups Projects
menu.rb 1.44 KiB
Newer Older
Sébastien Gaya's avatar
Sébastien Gaya committed
# == Schema Information
#
# Table name: communication_website_menus
#
Sébastien Gaya's avatar
Sébastien Gaya committed
#  id                       :uuid             not null, primary key
Sébastien Gaya's avatar
Sébastien Gaya committed
#  github_path              :text
Sébastien Gaya's avatar
Sébastien Gaya committed
#  identifier               :string
#  title                    :string
#  created_at               :datetime         not null
#  updated_at               :datetime         not null
#  communication_website_id :uuid             not null
#  university_id            :uuid             not null
Sébastien Gaya's avatar
Sébastien Gaya committed
#
# Indexes
#
Sébastien Gaya's avatar
Sébastien Gaya committed
#  idx_comm_website_menus_on_communication_website_id  (communication_website_id)
Sébastien Gaya's avatar
Sébastien Gaya committed
#  index_communication_website_menus_on_university_id  (university_id)
#
# Foreign Keys
#
Sébastien Gaya's avatar
Sébastien Gaya committed
#  fk_rails_...  (communication_website_id => communication_websites.id)
Sébastien Gaya's avatar
Sébastien Gaya committed
#  fk_rails_...  (university_id => universities.id)
#
class Communication::Website::Menu < ApplicationRecord
  include WithGithubFiles
Sébastien Gaya's avatar
Sébastien Gaya committed

Sébastien Gaya's avatar
Sébastien Gaya committed
  belongs_to :university
Sébastien Gaya's avatar
Sébastien Gaya committed
  belongs_to :website, foreign_key: :communication_website_id
  has_many :items, class_name: 'Communication::Website::Menu::Item', dependent: :destroy

  validates :title, :identifier, presence: true
  validates :identifier, uniqueness: { scope: :communication_website_id }

  after_touch :publish_github_files

Sébastien Gaya's avatar
Sébastien Gaya committed
  scope :ordered, -> { order(created_at: :asc) }

  def to_s
    "#{title}"
  end
Sébastien Gaya's avatar
Sébastien Gaya committed

  # Override from WithGithubFiles
Sébastien Gaya's avatar
Sébastien Gaya committed
  def github_path_generated
Sébastien Gaya's avatar
Sébastien Gaya committed
  end

  def to_jekyll(github_file)
    items.root.ordered.map(&:to_jekyll_hash).to_yaml
Sébastien Gaya's avatar
Sébastien Gaya committed
  end
Sébastien Gaya's avatar
Sébastien Gaya committed
end