Method: Exposant::Model::ClassMethods#has_exposant

Defined in:
lib/exposant/model.rb

#has_exposant(name: nil, type: nil) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/exposant/model.rb', line 11

def has_exposant(name: nil, type: nil)
  @exposant_class = name
  @exposant_type = type

  if type.present? && type != :exposant
    raise 'Type must be a symbol' unless type.is_a?(Symbol)

    define_method type do |variant = nil|
      exposant(variant, type)
    end

    define_singleton_method type do |obj, variant = nil|
      exposant(obj, variant, type)
    end
  end

  self
end