Module: Neo4j::Shared::RelTypeConverters

Included in:
ActiveNode::HasN::Association, ActiveRel::Types::ClassMethods
Defined in:
lib/neo4j/shared/rel_type_converters.rb

Overview

This module controls changes to relationship type based on Neo4j::Config.transform_rel_type. It’s used whenever a rel type is automatically determined based on ActiveRel model name or association type.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.decorated_rel_type(type) ⇒ String

Returns A string that conforms to the set rel type conversion setting.

Parameters:

  • type (String, Symbol)

    The raw string or symbol to be used as the basis of the relationship type

Returns:

  • (String)

    A string that conforms to the set rel type conversion setting.



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/neo4j/shared/rel_type_converters.rb', line 25

def decorated_rel_type(type)
  type = type.to_s
  decorated_type =  case rel_transformer
                    when :upcase
                      type.underscore.upcase
                    when :downcase
                      type.underscore.downcase
                    when :legacy
                      "##{type.underscore.downcase}"
                    when :none
                      type
                    else
                      type.underscore.upcase
                    end
  decorated_type.tap { |s| s.gsub!('/', '::') if type.include?('::') }
end

.rel_transformerObject

Determines how relationship types should look when inferred based on association or ActiveRel model name. With the exception of ‘:none`, all options will call `underscore`, so `ThisClass` becomes `this_class`, with capitalization determined by the specific option passed. Valid options:

  • :upcase - ‘:this_class`, `ThisClass`, `thiS_claSs` (if you don’t like yourself) becomes ‘THIS_CLASS`

  • :downcase - same as above, only… downcased.

  • :legacy - downcases and prepends ‘#`, so ThisClass becomes `#this_class`

  • :none - uses the string version of whatever is passed with no modifications



19
20
21
# File 'lib/neo4j/shared/rel_type_converters.rb', line 19

def rel_transformer
  @rel_transformer ||= Neo4j::Config[:transform_rel_type].nil? ? :upcase : Neo4j::Config[:transform_rel_type]
end

Instance Method Details

#decorated_rel_type(type) ⇒ Object



6
7
8
# File 'lib/neo4j/shared/rel_type_converters.rb', line 6

def decorated_rel_type(type)
  @decorated_rel_type ||= Neo4j::Shared::RelTypeConverters.decorated_rel_type(type)
end