Methods

Attributes

[R] attributes

Class Public methods

new(attributes)

📝 Source code
# File activemodel/lib/active_model/validations/acceptance.rb, line 28
          def initialize(attributes)
            @attributes = attributes.map(&:to_s)
          end
🔎 See on GitHub

Instance Public methods

==(other)

📝 Source code
# File activemodel/lib/active_model/validations/acceptance.rb, line 73
          def ==(other)
            self.class == other.class && attributes == other.attributes
          end
🔎 See on GitHub

define_on(klass)

📝 Source code
# File activemodel/lib/active_model/validations/acceptance.rb, line 56
          def define_on(klass)
            @lock&.synchronize do
              return unless @lock

              attr_readers = attributes.reject { |name| klass.attribute_method?(name) }
              attr_writers = attributes.reject { |name| klass.attribute_method?("#{name}=") }

              attr_reader(*attr_readers)
              attr_writer(*attr_writers)

              remove_method :respond_to_missing?
              remove_method :method_missing

              @lock = nil
            end
          end
🔎 See on GitHub

included(klass)

📝 Source code
# File activemodel/lib/active_model/validations/acceptance.rb, line 32
          def included(klass)
            @lock = Mutex.new
            mod = self

            define_method(:respond_to_missing?) do |method_name, include_private = false|
              mod.define_on(klass)
              super(method_name, include_private) || mod.matches?(method_name)
            end

            define_method(:method_missing) do |method_name, *args, &block|
              mod.define_on(klass)
              if mod.matches?(method_name)
                send(method_name, *args, &block)
              else
                super(method_name, *args, &block)
              end
            end
          end
🔎 See on GitHub

matches?(method_name)

📝 Source code
# File activemodel/lib/active_model/validations/acceptance.rb, line 51
          def matches?(method_name)
            attr_name = method_name.to_s.chomp("=")
            attributes.any? { |name| name == attr_name }
          end
🔎 See on GitHub