Class: PluckMap::AttributeBuilder

Inherits:
BasicObject
Defined in:
lib/pluck_map/attribute_builder.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes, model) ⇒ AttributeBuilder

Returns a new instance of AttributeBuilder.



18
19
20
21
# File 'lib/pluck_map/attribute_builder.rb', line 18

def initialize(attributes, model)
  @attributes = attributes
  @model = model
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(attribute_name, *args) ⇒ Object



23
24
25
26
27
28
# File 'lib/pluck_map/attribute_builder.rb', line 23

def method_missing(attribute_name, *args)
  options = args.extract_options!
  options[:value] = args.first unless args.empty?
  @attributes.push Attribute.new(attribute_name, @model, options)
  :attribute_added
end

Class Method Details

.build(model:, &block) ⇒ Object



7
8
9
10
11
12
13
14
15
16
# File 'lib/pluck_map/attribute_builder.rb', line 7

def self.build(model:, &block)
  attributes = []
  builder = self.new(attributes, model)
  if block.arity == 1
    block.call(builder)
  else
    builder.instance_eval(&block)
  end
  Attributes.new(attributes)
end