Method: ActiveModel::Validations::AcceptanceValidator::LazilyDefineAttributes#define_on

Defined in:
activemodel/lib/active_model/validations/acceptance.rb

#define_on(klass) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# 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