Module: Micro::Attributes::Composition::Instance
- Defined in:
- lib/micro/attributes/composition.rb
Instance Method Summary collapse
Instance Method Details
#__validate_nested_entities__ ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/micro/attributes/composition.rb', line 77 def __validate_nested_entities__ return unless respond_to?(:errors) # Iterate only PUBLIC attributes so private/protected nested # entity names never leak through ActiveModel `errors` / # `full_messages`. Mirrors the bubble's visibility gate above. self.class.attributes_by_visibility[:public].each do |attr_name| child = instance_variable_get("@#{attr_name}") next unless child.is_a?(::Object) && child.class.include?(::Micro::Attributes) child_invalid = if child.respond_to?(:valid?) # If the child already has errors, treat it as invalid # without re-running `valid?` — AM's `valid?` calls # `errors.clear` first, which would wipe any errors the # caller (or another validator pass) had added to a # shared child instance. child.errors.any? || !child.valid? elsif child.respond_to?(:attributes_errors?) child.attributes_errors? else false end errors.add(attr_name.to_sym, 'is invalid') if child_invalid end end |