Module: Scopiform::Helpers::ClassMethods

Defined in:
lib/scopiform/helpers.rb

Instance Method Summary collapse

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_aliasesObject



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_invertedObject



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

Returns:

  • (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