class ROM::Transformer

Transformer is a data mapper which uses Transproc's transformer DSL to define transformations.

@api public

Public Class Methods

base_relation() click to toggle source

This is needed to make transformers compatible with rom setup

@api private

# File lib/rom/transformer.rb, line 83
def self.base_relation
  relation
end
build() click to toggle source

Build a mapper instance

@return [Transformer]

@api public

# File lib/rom/transformer.rb, line 92
def self.build
  new
end
map(&block) click to toggle source

Define transformation pipeline

@example

class UsersMapper < ROM::Transformer
  map do
    rename_keys user_id: :id
    deep_stringify_keys
  end
end

@return [self]

@api public

# File lib/rom/transformer.rb, line 74
def self.map(&block)
  define! do
    map_array(&block)
  end
end
relation(name = Undefined, options = EMPTY_HASH) click to toggle source

Configure relation for the transformer

@example with a custom name

class UsersMapper < ROM::Transformer
  relation :users, as: :json_serializer

  map do
    rename_keys user_id: :id
    deep_stringify_keys
  end
end

users.map_with(:json_serializer)

@param name [Symbol] @param options [Hash] @option options :as [Symbol] Mapper identifier

@api public

# File lib/rom/transformer.rb, line 54
def self.relation(name = Undefined, options = EMPTY_HASH)
  return @relation if name.equal?(Undefined) && defined?(@relation)

  register_as(options.fetch(:as, name))
  @relation = name
end