Module: AssociationHelper

Included in:
ActivePreview::Builder, ActivePreview::Preview
Defined in:
lib/active_preview/association_helper.rb

Instance Method Summary collapse

Instance Method Details

#association_from_key(key) ⇒ Object



2
3
4
# File 'lib/active_preview/association_helper.rb', line 2

def association_from_key(key)
  key.to_s.split("_").tap { |arr| arr.delete("attributes") }.join("_")
end

#association_inverse(parent_class:, child_class:) ⇒ Object

Used to properly set parent in has_many previews



16
17
18
19
20
21
22
23
24
# File 'lib/active_preview/association_helper.rb', line 16

def association_inverse(parent_class:, child_class:)
  parent = parent_class.to_s.downcase
  set = associations(child_class)
  return parent if set.include? parent
  set.each do |a|
    next unless singular? a
    return a if association_class(klass: child_class, association: a)
  end
end

#associations(klass) ⇒ Object



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

def associations(klass)
  klass.reflect_on_all_associations.map { |a| a.name.to_s }
end

#class_of_association(base_class:, key: nil, association: nil) ⇒ Object



10
11
12
13
# File 'lib/active_preview/association_helper.rb', line 10

def class_of_association(base_class:, key: nil, association: nil)
  association = association_from_key(key) if key
  klass.reflect_on_association(association).klass
end

#singular?(name) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/active_preview/association_helper.rb', line 26

def singular?(name)
  name.singularize == name
end