Module: ValidationsSkipable

Defined in:
lib/validations_skipper.rb

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/validations_skipper.rb', line 2

def self.included(base)
  base.class_eval do
    attr_accessor :skip_validations

    def initialize(*)
      instance_methods = self.class.instance_methods + self.class.private_instance_methods
      @original_methods = instance_methods.map do |instance_method|
        [instance_method, method(instance_method)]
      end.to_h
      super
    end

    def skip_validations
      @skip_validations ||= []
    end

    def skip_validations=(skip_validations)
      @skip_validations = skip_validations

      @skip_validations.each do |validation_method|
        define_singleton_method(validation_method) do
          return if __method__.in? @skip_validations
          @original_methods[validation_method].call
        end
      end
    end
  end
end