take-five/acts_as_ordered_tree

View on GitHub
lib/acts_as_ordered_tree/transaction/destroy.rb

Summary

Maintainability
A
0 mins
Test Coverage
# coding: utf-8

require 'acts_as_ordered_tree/transaction/base'
require 'acts_as_ordered_tree/transaction/dsl'

module ActsAsOrderedTree
  module Transaction
    class Destroy < Base
      include DSL

      attr_reader :from

      before 'trigger_callback(:before_remove, from.parent)'

      after :decrement_lower_positions
      after 'from.decrement_counter'
      after 'trigger_callback(:after_remove, from.parent)'

      finalize

      # @param [ActsAsOrderedTree::Node] node
      # @param [ActsAsOrderedTree::Position] from from which position given +node+ is destroyed
      def initialize(node, from)
        super(node)
        @from = from
      end

      private
      def decrement_lower_positions
        from.lower.update_all set position => position - 1
      end
    end
  end
end