Module: Micro::Attributes::Features::ActiveModelValidations

Defined in:
lib/micro/attributes/features/activemodel_validations.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/micro/attributes/features/activemodel_validations.rb', line 57

def self.included(base)
  begin
    require 'active_model'

    base.send(:include, ::ActiveModel::Validations)
    base.extend(ClassMethods)

    case
    when base <= Features::Accept::Strict then base.send(:include, WithAcceptStrict)
    when base <= Features::Accept then base.send(:include, WithAccept)
    else base.send(:include, Standard)
    end

    # When AM is mixed into any `Micro::Attributes` includer, auto-register
    # a validator that recurses through nested-attribute children so
    # `valid?` reflects deep descendant invalidity. The method is
    # provided by `Composition::Instance`.
    if base.include?(::Micro::Attributes)
      base.validate(:__validate_nested_entities__)
    end
  rescue LoadError
  end
end