module Attrocity::ModelBuilder::InstanceMethods

Public Instance Methods

model() click to toggle source
# File lib/attrocity/builders/model_builder.rb, line 23
def model
  Model.new(attribute_set.to_h.merge(model_attributes_hash))
end

Private Instance Methods

build_attributes_methods() click to toggle source
# File lib/attrocity/builders/model_builder.rb, line 33
def build_attributes_methods
  AttributeMethodsBuilder.for_attribute_set(self, attribute_set).build
end
init_value_attributes() click to toggle source
# File lib/attrocity/builders/model_builder.rb, line 29
def init_value_attributes
  self.class.attribute_set.to_attribute_set(raw_data)
end
model_attributes() click to toggle source
# File lib/attrocity/builders/model_builder.rb, line 46
def model_attributes
  @model_attributes ||= self.class.model_attribute_set.attributes
end
model_attributes_hash() click to toggle source
# File lib/attrocity/builders/model_builder.rb, line 50
def model_attributes_hash
  Hash.new.tap do |h|
    model_attributes.each do |model_attr|
      name = model_attr.name
      h[name] = self.send(name)
    end
  end
end
setup_model_attributes() click to toggle source
# File lib/attrocity/builders/model_builder.rb, line 37
def setup_model_attributes
  model_attributes.each do |model_attr|
    name = model_attr.name
    define_singleton_method(name) {
      instance_eval("@#{name} ||= model_attr.model(raw_data)")
    }
  end
end