Class: Foobara::ActiveRecordType::ExtendActiveRecordTypeDeclaration::TypeDeclarationExtension::RegisteredTypeDeclaration::Desugarizers::UnregisteredActiveRecordBaseClassDesugarizer
- Inherits:
-
TypeDeclarations::Desugarizer
- Object
- Value::Processor
- Value::Transformer
- TypeDeclarations::Desugarizer
- Foobara::ActiveRecordType::ExtendActiveRecordTypeDeclaration::TypeDeclarationExtension::RegisteredTypeDeclaration::Desugarizers::UnregisteredActiveRecordBaseClassDesugarizer
- Defined in:
- foobara-active-record-type-0.1.0/src/extend_active_record_type_declaration/type_declaration_extension/registered_type_declaration/desugarizers/unregistered_active_record_base_class_desugarizer.rb
Instance Attribute Summary
Attributes inherited from Value::Processor
#created_in_namespace, #declaration_data, #parent_declaration_data
Instance Method Summary collapse
- #applicable?(sugary_type_declaration) ⇒ Boolean
-
#desugarize(sugary_type_declaration) ⇒ Object
We will create the foobara type from the active record class and then the RegisteredActiveRecordBaseClassDesugarizer will handle it properly.
- #priority ⇒ Object
Methods inherited from TypeDeclarations::Desugarizer
foobara_manifest, requires_declaration_data?, #transform
Methods included from TypeDeclarations::WithRegistries
#handler_for_class, #lookup_absolute_type!, #lookup_type, #lookup_type!, #type_declaration_handler_for, #type_for_declaration, #type_registered?
Methods included from Concern
foobara_class_methods_module_for, foobara_concern?, included
Methods inherited from Value::Transformer
create, error_classes, foobara_manifest, #process_value, subclass, #transform
Methods inherited from Value::Processor
#always_applicable?, #attribute_name, #build_error, default_declaration_data, #dup_processor, error_class, #error_class, error_classes, #error_classes, #error_context, #error_message, #error_path, foobara_manifest, #foobara_manifest, #initialize, #inspect, instance, #method_missing, #name, new_with_agnostic_args, #possible_errors, #process_outcome, #process_outcome!, #process_value, #process_value!, processor_name, requires_declaration_data?, #requires_declaration_data?, requires_parent_declaration_data?, #requires_parent_declaration_data?, #respond_to_missing?, #runner, symbol, #symbol
Methods included from IsManifestable
#foobara_domain, #foobara_manifest, #foobara_organization, #scoped_clear_caches
Constructor Details
This class inherits a constructor from Foobara::Value::Processor
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Foobara::Value::Processor
Instance Method Details
#applicable?(sugary_type_declaration) ⇒ Boolean
8 9 10 11 12 13 |
# File 'src/extend_active_record_type_declaration/type_declaration_extension/registered_type_declaration/desugarizers/unregistered_active_record_base_class_desugarizer.rb', line 8 def applicable?(sugary_type_declaration) if sugary_type_declaration.class? klass = sugary_type_declaration.declaration_data klass < ActiveRecord::Base && !klass. end end |
#desugarize(sugary_type_declaration) ⇒ Object
We will create the foobara type from the active record class and then the RegisteredActiveRecordBaseClassDesugarizer will handle it properly. This will keep declarations using just the active record class simple in the first place they are used by acting as if it were a registered type at the time even though it wasn't yet.
20 21 22 23 24 25 26 27 28 29 30 |
# File 'src/extend_active_record_type_declaration/type_declaration_extension/registered_type_declaration/desugarizers/unregistered_active_record_base_class_desugarizer.rb', line 20 def desugarize(sugary_type_declaration) klass = sugary_type_declaration.declaration_data handler = handler_for_class(Foobara::ActiveRecordType::ExtendActiveRecordTypeDeclaration) handler.process_value!(sugary_type_declaration) sugary_type_declaration.declaration_data = klass...to_sym sugary_type_declaration.handle_symbolic_declaration sugary_type_declaration end |