Method: Exposant::Model::ClassMethods#exposant_class

Defined in:
lib/exposant/model.rb

#exposant_class(variant = nil, type = nil) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/exposant/model.rb', line 51

def exposant_class(variant = nil, type = nil)
  type_name = (type || exposant_type).to_s.camelcase
  klass = if @exposant_class.present?
            @exposant_class
          else
            name.dup.concat(type_name)
          end

  klass = klass
          .split('::')
          .tap { |arr| arr.last.prepend(variant&.to_s&.downcase&.capitalize || '') }
          .join('::')

  raise "Missing exposant #{klass}" unless const_defined?(klass)

  klass.constantize
end