class ROM::Mapping
Builder DSL for ROM
relations
Attributes
environment[R]
model[R]
schema[R]
Public Class Methods
build(environment, schema, &block)
click to toggle source
Build ROM
relations
@example
relation = Axiom::Relation::Base.new(:users, [[:id, Integer], [:user_name, String]]) env = { users: relation } User = Class.new(OpenStruct.new) registry = Mapping.build(env) do users do map :id map :user_name, to: :name end end registry[:users] # #<ROM::Relation:0x000000025d3160>
@param [Environment] rom environment @param [Schema] rom schema
@return [Hash]
@api public
# File lib/rom/mapping.rb, line 37 def self.build(environment, schema, &block) new(environment, schema, &block) end
new(environment, schema, &block)
click to toggle source
Initialize a new mapping instance
@return [undefined]
@api private
# File lib/rom/mapping.rb, line 46 def initialize(environment, schema, &block) @environment = environment @schema = schema instance_eval(&block) end
Private Instance Methods
build_relation(relation, &block)
click to toggle source
Build relation
@return [Relation]
@api private
# File lib/rom/mapping.rb, line 74 def build_relation(relation, &block) definition = Definition.build(relation.header, &block) environment[relation.name] = Relation.build(relation, definition.mapper) end
method_missing(name, *, &block)
click to toggle source
Method missing hook
@return [Relation]
@api private
Calls superclass method
# File lib/rom/mapping.rb, line 59 def method_missing(name, *, &block) relation = schema[name] if relation build_relation(relation, &block) else super end end