Sha256: 6f429b338faa502592dae3db02029fbd325e43d94daf7b50150fa8874b1219da

Contents?: true

Size: 589 Bytes

Versions: 4

Compression:

Stored size: 589 Bytes

Contents

module Spina
  class NavigationItem < ApplicationRecord
    belongs_to :navigation, touch: true
    belongs_to :page

    has_ancestry orphan_strategy: :adopt

    scope :sorted, -> { order('spina_navigation_items.position') }
    scope :live, -> { joins(:page).where(spina_pages: {draft: false, active: true}) }
    scope :in_menu, -> { joins(:page).where(spina_pages: {show_in_menu: true}) }
    scope :active, -> { joins(:page).where(spina_pages: {active: true}) }

    validates :page, uniqueness: {scope: :navigation}

    delegate :menu_title, :materialized_path, to: :page
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
spina-1.0.3 app/models/spina/navigation_item.rb
spina-1.0.2 app/models/spina/navigation_item.rb
spina-1.0.1 app/models/spina/navigation_item.rb
spina-1.0.0 app/models/spina/navigation_item.rb