# File lib/rom/factory/builder/persistable.rb, line 50 def primary_key_names relation.schema.primary_key.map(&:name) end
class ROM::Factory::Builder::Persistable
@api private
Attributes
builder[R]
@api private
relation[R]
@api private
Public Class Methods
new(builder, relation = builder.relation)
click to toggle source
@api private
Calls superclass method
# File lib/rom/factory/builder/persistable.rb, line 17 def initialize(builder, relation = builder.relation) super(builder) @builder = builder @relation = relation end
Public Instance Methods
create(*args)
click to toggle source
@api private
# File lib/rom/factory/builder/persistable.rb, line 24 def create(*args) traits, attrs = builder.extract_tuple(args) tuple = tuple(*traits, attrs) validate_keys(traits, attrs) persisted = persist(tuple) if tuple_evaluator.has_associations?(traits) tuple_evaluator.persist_associations(tuple, persisted, traits) pk = primary_key_names.map { |key| persisted[key] } relation.by_pk(*pk).combine(*tuple_evaluator.assoc_names(traits)).first else persisted end end
Private Instance Methods
persist(attrs)
click to toggle source
@api private
# File lib/rom/factory/builder/persistable.rb, line 45 def persist(attrs) relation.with(auto_struct: !tuple_evaluator.has_associations?).command(:create).call(attrs) end
primary_key_names()
click to toggle source
@api private