Class: PreloadPluck::Field

Inherits:
Struct
  • Object
show all
Defined in:
lib/preload_pluck.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#base_classObject

Returns the value of attribute base_class

Returns:

  • (Object)

    the current value of base_class



5
6
7
# File 'lib/preload_pluck.rb', line 5

def base_class
  @base_class
end

#pathObject

Returns the value of attribute path

Returns:

  • (Object)

    the current value of path



5
6
7
# File 'lib/preload_pluck.rb', line 5

def path
  @path
end

Instance Method Details

#assoc(level) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/preload_pluck.rb', line 18

def assoc(level)
  return nil if level >= path.length
  current_class = base_class
  assoc = nil
  (level + 1).times do |l|
    assoc = current_class.reflect_on_association(path[l])
    raise 'preload_pluck only supports belongs_to associations' unless assoc.macro == :belongs_to
    current_class = assoc.class_name.constantize
  end
  assoc
end

#level?(level) ⇒ Boolean

Returns:

  • (Boolean)


10
11
12
# File 'lib/preload_pluck.rb', line 10

def level?(level)
  !!path[level]
end

#nested?(level) ⇒ Boolean

Returns:

  • (Boolean)


6
7
8
# File 'lib/preload_pluck.rb', line 6

def nested?(level)
  level + 2 <= path.length
end

#path_upto(level) ⇒ Object



14
15
16
# File 'lib/preload_pluck.rb', line 14

def path_upto(level)
  path[0..level].join('.')
end