Sha256: fe33400654255d0a8f94e50dd73504157bc0149a9e4c9500bcb3f8d8d5ea7eea

Contents?: true

Size: 1.09 KB

Versions: 3

Compression:

Stored size: 1.09 KB

Contents

module PushType
  class Node < ActiveRecord::Base

    include PushType::Customizable
    include PushType::Nestable
    include PushType::Templatable
    include PushType::Unexposable
    include PushType::Publishable
    include PushType::Trashable
    include PushType::Presentable

    belongs_to :creator, class_name: 'PushType::User', optional: true
    belongs_to :updater, class_name: 'PushType::User', optional: true

    has_closure_tree name_column: 'slug', order: 'sort_order', dependent: :destroy

    validates :title, presence: true
    validates :slug,  presence: true, uniqueness: { scope: :parent_id }

    def self.find_by_base64_id(secret)
      find Base64.urlsafe_decode64(secret)
    rescue ArgumentError
      raise ActiveRecord::RecordNotFound
    end

    def base64_id
      Base64.urlsafe_encode64 id.to_s
    end

    def permalink
      @permalink ||= self_and_ancestors.map(&:slug).reverse.join('/')
    end    

    def orphan?
      parent && parent.trashed?
    end

    def trash!  
      super
      self.descendants.update_all deleted_at: Time.zone.now
    end
    
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
push_type_core-0.12.1 app/models/push_type/node.rb
push_type_core-0.12.0 app/models/push_type/node.rb
push_type_core-0.12.0.beta.1 app/models/push_type/node.rb