Class: Sumaki::Model::Associations::Reflection::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/sumaki/model/associations/reflection.rb

Overview

:nodoc:

Direct Known Subclasses

Repeated, Singular

Instance Method Summary collapse

Constructor Details

#initialize(owner_class, name, class_name: nil) ⇒ Base

Returns a new instance of Base.



10
11
12
13
14
# File 'lib/sumaki/model/associations/reflection.rb', line 10

def initialize(owner_class, name, class_name: nil)
  @owner_class = owner_class
  @name = name
  @class_name = class_name
end

Instance Method Details

#association_for(model) ⇒ Object



31
32
33
# File 'lib/sumaki/model/associations/reflection.rb', line 31

def association_for(model)
  self.class.association_class.new(model, self)
end

#model_classObject



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/sumaki/model/associations/reflection.rb', line 18

def model_class
  @model_class ||= begin
    basename = @class_name&.to_s || classify(@name.to_s)
    klass = if @owner_class.const_defined?(basename, false)
              @owner_class.const_get(basename, false)
            else
              @owner_class.const_set(basename, Class.new { include Model })
            end
    klass.parent = @owner_class
    klass
  end
end

#nameObject



16
# File 'lib/sumaki/model/associations/reflection.rb', line 16

def name = @name.to_sym