class ROM::Factory::Builder

@api private

Public Instance Methods

create(*args)
Alias for: struct
extract_tuple(args) click to toggle source

@api private

# File lib/rom/factory/builder.rb, line 79
def extract_tuple(args)
  tuple_evaluator.extract_tuple(args)
end
persistable() click to toggle source

@api private

# File lib/rom/factory/builder.rb, line 59
def persistable
  Persistable.new(self, relation)
end
relation() click to toggle source

@api private

# File lib/rom/factory/builder.rb, line 74
def relation
  tuple_evaluator.relation
end
struct(*args) click to toggle source

@api private

# File lib/rom/factory/builder.rb, line 41
def struct(*args)
  traits, attrs = extract_tuple(args)
  validate_keys(traits, attrs, allow_associations: true)

  tuple_evaluator.struct(*args)
end
Also aliased as: create
struct_namespace(namespace) click to toggle source

@api private

# File lib/rom/factory/builder.rb, line 50
def struct_namespace(namespace)
  if options[:struct_namespace][:overridable]
    with(struct_namespace: options[:struct_namespace].merge(namespace: namespace))
  else
    self
  end
end
tuple(*args) click to toggle source

@api private

# File lib/rom/factory/builder.rb, line 34
def tuple(*args)
  traits, attrs = extract_tuple(args)

  tuple_evaluator.defaults(traits, attrs)
end
tuple_evaluator() click to toggle source

@api private

# File lib/rom/factory/builder.rb, line 64
def tuple_evaluator
  @__tuple_evaluator__ ||= TupleEvaluator.new(attributes, tuple_evaluator_relation, traits)
end
tuple_evaluator_relation() click to toggle source

@api private

# File lib/rom/factory/builder.rb, line 69
def tuple_evaluator_relation
  options[:relation].struct_namespace(options[:struct_namespace][:namespace])
end
validate_keys(traits, tuple, allow_associations: false) click to toggle source

@api private

# File lib/rom/factory/builder.rb, line 84
def validate_keys(traits, tuple, allow_associations: false)
  schema_keys = relation.schema.attributes.map(&:name)
  assoc_keys = tuple_evaluator.assoc_names(traits)
  unknown_keys = tuple.keys - schema_keys - assoc_keys

  unknown_keys = unknown_keys - relation.schema.associations.to_h.keys if allow_associations

  raise UnknownFactoryAttributes, unknown_keys unless unknown_keys.empty?
end