Sha256: ecd1138c0ad04eb7dd9bb3ac040b5f230cedf2fac60e467906d337fbc982b46a

Contents?: true

Size: 1.18 KB

Versions: 8

Compression:

Stored size: 1.18 KB

Contents

class Card
  class Director
    # director-related Card instance methods
    module All
      def act options={}, &block
        if act_card
          add_to_act options, &block
        else
          start_new_act(&block)
        end
      end

      def act_card
        Card::Director.act_card
      end

      def act_card?
        self == act_card
      end

      def save! **args
        as_subcard = args.delete :as_subcard
        act(as_subcard: as_subcard) { super **args }
      end

      def save *_args
        act { super }
      end

      def valid? *_args
        act(validating: true) { super }
      end

      def update *_args
        act { super }
      end

      def update! *_args
        act { super }
      end

      alias_method :update_attributes, :update
      alias_method :update_attributes!, :update!

      private

      def start_new_act &block
        self.director = nil
        Director.run_act(self) do
          run_callbacks(:act, &block)
        end
      end

      def add_to_act options={}
        director.appoint self unless @director
        director.head = true unless options[:validating] || options[:as_subcard]
        yield
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
card-1.104.2 lib/card/director/all.rb
card-1.104.1 lib/card/director/all.rb
card-1.104.0 lib/card/director/all.rb
card-1.103.4 lib/card/director/all.rb
card-1.103.3 lib/card/director/all.rb
card-1.103.2 lib/card/director/all.rb
card-1.103.1 lib/card/director/all.rb
card-1.103.0 lib/card/director/all.rb