Module: StoreModel

Defined in:
lib/store_model.rb,
lib/store_model/enum.rb,
lib/store_model/model.rb,
lib/store_model/types.rb,
lib/store_model/railtie.rb,
lib/store_model/version.rb,
lib/store_model/types/one.rb,
lib/store_model/types/base.rb,
lib/store_model/types/hash.rb,
lib/store_model/types/many.rb,
lib/store_model/types/one_of.rb,
lib/store_model/configuration.rb,
lib/store_model/type_builders.rb,
lib/store_model/types/one_base.rb,
lib/store_model/types/raw_json.rb,
lib/store_model/types/enum_type.rb,
lib/store_model/types/hash_base.rb,
lib/store_model/types/many_base.rb,
lib/store_model/nested_attributes.rb,
lib/store_model/ext/parent_assignment.rb,
lib/store_model/types/one_polymorphic.rb,
lib/store_model/ext/active_record/base.rb,
lib/store_model/types/hash_polymorphic.rb,
lib/store_model/types/many_polymorphic.rb,
lib/store_model/combine_errors_strategies.rb,
lib/store_model/ext/active_model/attributes.rb,
lib/store_model/combine_errors_strategies/merge_error_strategy.rb,
lib/store_model/combine_errors_strategies/merge_hash_error_strategy.rb,
lib/store_model/combine_errors_strategies/merge_array_error_strategy.rb,
lib/store_model/combine_errors_strategies/mark_invalid_error_strategy.rb

Overview

:nodoc:

Defined Under Namespace

Modules: Attributes, Base, CombineErrorsStrategies, Enum, Model, NestedAttributes, ParentAssignment, TypeBuilders, Types Classes: Configuration, Railtie

Constant Summary collapse

VERSION =
"4.3.0"

Class Method Summary collapse

Class Method Details

.configObject



10
11
12
# File 'lib/store_model.rb', line 10

def config
  @config ||= Configuration.new
end

.one_of(&block) ⇒ Object



15
16
17
# File 'lib/store_model.rb', line 15

def one_of(&block)
  Types::OneOf.new(&block)
end

.union(klasses, discriminator: "type") ⇒ Object

Creates a union type for polymorphic attributes



23
24
25
26
27
28
29
30
31
32
# File 'lib/store_model.rb', line 23

def union(klasses, discriminator: "type")
  discriminators_and_classes = klasses.map do |cls|
    [cls._default_attributes[discriminator]&.value, cls]
  end

  validate_missing_discriminators!(discriminator, discriminators_and_classes)
  validate_duplicate_discriminators!(discriminators_and_classes)

  union_one_of(discriminator, Hash[discriminators_and_classes])
end