class Page include Mongoid::Document include Mongoid::Timestamps field :name, localize: true field :number, type: Integer field :module field :url field :page_id field :data_count, type: Integer, default: 10 field :enabled_for, type: Array, default: [] field :menu_enabled_for, type: Array, default: [] field :categories, type: Array, :default => [] field :enabled_for_sitemap, type: Array, :default => [] has_many :page_parts, :autosave => true, :dependent => :destroy has_many :child_page, :class_name => 'Page', :inverse_of => :parent_page, :dependent => :destroy belongs_to :parent_page, :class_name => 'Page', :inverse_of => :child_page def to_param page_id.parameterize end def self.find_by_param(input) self.find_by(page_id: input) rescue nil end def self.root self.where(:parent_page_id.ne => "" , :parent_page_id.exists => false).first end def root? self.parent_page_id.nil? end def sorted_published_child_pages self.child_page.where(:menu_enabled_for => I18n.locale).asc(:number) end def published_child_pages self.child_page.where(:menu_enabled_for => I18n.locale) end end