Module: AssociationHelper
- Included in:
- ActivePreview::Builder, ActivePreview::Preview
- Defined in:
- lib/active_preview/association_helper.rb
Instance Method Summary collapse
- #association_from_key(key) ⇒ Object
-
#association_inverse(parent_class:, child_class:) ⇒ Object
Used to properly set parent in has_many previews.
- #associations(klass) ⇒ Object
- #class_of_association(base_class:, key: nil, association: nil) ⇒ Object
- #singular?(name) ⇒ Boolean
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
26 27 28 |
# File 'lib/active_preview/association_helper.rb', line 26 def singular?(name) name.singularize == name end |