Class: ROM::Factory::DSL
- Inherits:
-
BasicObject
- Defined in:
- lib/rom/factory/dsl.rb
Overview
Instance Attribute Summary collapse
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(meth, *args, &block) ⇒ Object
This method is part of a private API.
You should avoid using this method if possible, as it may be removed or be changed in the future.
140
141
142
143
144
145
146
|
# File 'lib/rom/factory/dsl.rb', line 140
def method_missing(meth, *args, &block)
if _valid_names.include?(meth)
define_attr(meth, *args, &block)
else
super
end
end
|
Instance Attribute Details
#_attributes ⇒ Object
30
31
32
|
# File 'lib/rom/factory/dsl.rb', line 30
def _attributes
@_attributes
end
|
#_factories ⇒ Object
30
31
32
|
# File 'lib/rom/factory/dsl.rb', line 30
def _factories
@_factories
end
|
#_name ⇒ Object
30
31
32
|
# File 'lib/rom/factory/dsl.rb', line 30
def _name
@_name
end
|
#_relation ⇒ Object
30
31
32
|
# File 'lib/rom/factory/dsl.rb', line 30
def _relation
@_relation
end
|
#_traits ⇒ Object
31
32
33
|
# File 'lib/rom/factory/dsl.rb', line 31
def _traits
@_traits
end
|
#_valid_names ⇒ Object
30
31
32
|
# File 'lib/rom/factory/dsl.rb', line 30
def _valid_names
@_valid_names
end
|
Instance Method Details
#association(name, *traits, **options) ⇒ Object
Create an association attribute
130
131
132
133
134
135
|
# File 'lib/rom/factory/dsl.rb', line 130
def association(name, *traits, **options)
assoc = _relation.associations[name]
builder = -> { _factories.for_relation(assoc.target) }
_attributes << attributes::Association.new(assoc, builder, *traits, **options)
end
|
#create(name, *args) ⇒ Object
Delegate to a builder and persist a struct
54
55
56
|
# File 'lib/rom/factory/dsl.rb', line 54
def create(name, *args)
_factories[name, *args]
end
|
#fake(type) ⇒ Object
#fake(api, type) ⇒ Object
#fake(api, type, *args) ⇒ Object
Create a fake value using Faker gem
101
102
103
|
# File 'lib/rom/factory/dsl.rb', line 101
def fake(*args)
::ROM::Factory.fake(*args)
end
|
#timestamps ⇒ Object
70
71
72
73
|
# File 'lib/rom/factory/dsl.rb', line 70
def timestamps
created_at { ::Time.now }
updated_at { ::Time.now }
end
|
#trait(name, parents = [], &block) ⇒ Object
105
106
107
108
109
110
111
112
113
114
115
|
# File 'lib/rom/factory/dsl.rb', line 105
def trait(name, parents = [], &block)
_traits[name] = DSL.new(
"#{_name}_#{name}",
attributes: _traits.values_at(*parents).flat_map(&:elements).inject(
AttributeRegistry.new, :<<
),
relation: _relation,
factories: _factories,
&block
)._attributes
end
|