Module: Scopiform::Helpers::ClassMethods
- Defined in:
- lib/scopiform/helpers.rb
Instance Method Summary collapse
- #aliases_for(name) ⇒ Object
- #association(name) ⇒ Object
- #attribute_aliases ⇒ Object
- #attribute_aliases_inverted ⇒ Object
- #column(name) ⇒ Object
- #enum_attribute?(name) ⇒ Boolean
- #resolve_alias(name) ⇒ Object
- #scopiform_arel(ctx) ⇒ Object
Instance Method Details
#aliases_for(name) ⇒ Object
34 35 36 |
# File 'lib/scopiform/helpers.rb', line 34 def aliases_for(name) attribute_aliases_inverted[name.to_s] || [] end |
#association(name) ⇒ Object
43 44 45 46 47 48 49 50 51 52 |
# File 'lib/scopiform/helpers.rb', line 43 def association(name) name = resolve_alias(name) association = reflect_on_association(name) association.klass if association.present? && !association.polymorphic? association rescue NameError logger.warn "Unable to load class for association `#{name}` in model `#{self.name}`" nil end |
#attribute_aliases ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/scopiform/helpers.rb', line 14 def attribute_aliases alias_hash = super key = primary_key.to_s alias_hash = alias_hash.merge('id' => key) if key != 'id' alias_hash end |
#attribute_aliases_inverted ⇒ Object
23 24 25 |
# File 'lib/scopiform/helpers.rb', line 23 def attribute_aliases_inverted attribute_aliases.each_with_object({}) { |(k, v), o| (o[v] ||= []) << k } end |
#column(name) ⇒ Object
38 39 40 41 |
# File 'lib/scopiform/helpers.rb', line 38 def column(name) name = resolve_alias(name) safe_columns_hash[name.to_s] end |
#enum_attribute?(name) ⇒ Boolean
54 55 56 |
# File 'lib/scopiform/helpers.rb', line 54 def enum_attribute?(name) defined_enums.include? name.to_s end |
#resolve_alias(name) ⇒ Object
27 28 29 30 31 32 |
# File 'lib/scopiform/helpers.rb', line 27 def resolve_alias(name) name_str = name.to_s return attribute_aliases[name_str] if attribute_aliases[name_str].present? name_str end |
#scopiform_arel(ctx) ⇒ Object
58 59 60 |
# File 'lib/scopiform/helpers.rb', line 58 def scopiform_arel(ctx) ctx&.arel_table || arel_table end |