Module: Datamappify::Entity::Relation::DSL

Defined in:
lib/datamappify/entity/relation.rb

Instance Method Summary collapse

Instance Method Details

#create_accessor(entity_name) ⇒ void (private)

This method returns an undefined value.

Parameters:

  • entity_name (Symbol, String)


30
31
32
33
34
35
36
37
38
39
# File 'lib/datamappify/entity/relation.rb', line 30

def create_accessor(entity_name)
  class_eval <<-CODE, __FILE__, __LINE__ + 1
    attr_reader :#{entity_name}

    def #{entity_name}=(entity)
      @#{entity_name}        = entity
      self.#{entity_name}_id = entity.nil? ? nil : entity.id
    end
  CODE
end

#create_attribute(name, type, *args) ⇒ void (private)

This method returns an undefined value.

Parameters:

  • name (Symbol)
  • type (Class)
  • options (any)


48
49
50
# File 'lib/datamappify/entity/relation.rb', line 48

def create_attribute(name, type, *args)
  attribute name, type, *args
end

#record_attribute(attribute_name) ⇒ Array (private)

Parameters:

  • attribute_name (Symbol)

Returns:

  • (Array)


55
56
57
# File 'lib/datamappify/entity/relation.rb', line 55

def record_attribute(attribute_name)
  self.reference_keys << attribute_name
end

#references(entity_name) ⇒ void

This method returns an undefined value.

Parameters:

  • entity_name (Symbol, String)


17
18
19
20
21
22
23
# File 'lib/datamappify/entity/relation.rb', line 17

def references(entity_name)
  attribute_name = :"#{entity_name}_id"

  create_attribute attribute_name, Integer
  create_accessor entity_name
  record_attribute attribute_name
end