Skip to content
Snippets Groups Projects
menu.rb 1.33 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
pabois's avatar
pabois committed
#  communication_website_id :uuid             not null, indexed
#  university_id            :uuid             not null, indexed
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
#
pabois's avatar
pabois committed
#  fk_rails_8d6227916e  (university_id => universities.id)
#  fk_rails_dcc7198fc5  (communication_website_id => communication_websites.id)
Sébastien Gaya's avatar
Sébastien Gaya committed
#
class Communication::Website::Menu < ApplicationRecord
Arnaud Levy's avatar
Arnaud Levy committed
  include WithUniversity
pabois's avatar
pabois committed
  include Sanitizable
Arnaud Levy's avatar
Arnaud Levy committed
  include WithGit
Sébastien Gaya's avatar
Sébastien Gaya committed

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 }

  scope :ordered, -> { order(created_at: :asc) }

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

  def git_path(website)
Arnaud Levy's avatar
Arnaud Levy committed
    "data/menus/#{identifier}.yml"
Sébastien Gaya's avatar
Sébastien Gaya committed
  end
Sébastien Gaya's avatar
Sébastien Gaya committed
end