module Scopiform::Helpers::ClassMethods
Public Instance Methods
aliases_for(name)
click to toggle source
# File lib/scopiform/helpers.rb, line 34 def aliases_for(name) attribute_aliases_inverted[name.to_s] || [] end
association(name)
click to toggle source
# 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()
click to toggle source
Calls superclass method
# 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()
click to toggle source
# 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)
click to toggle source
# File lib/scopiform/helpers.rb, line 38 def column(name) name = resolve_alias(name) safe_columns_hash[name.to_s] end
enum_attribute?(name)
click to toggle source
# File lib/scopiform/helpers.rb, line 54 def enum_attribute?(name) defined_enums.include? name.to_s end
resolve_alias(name)
click to toggle source
# 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)
click to toggle source
# File lib/scopiform/helpers.rb, line 58 def scopiform_arel(ctx) ctx&.arel_table || arel_table end
Protected Instance Methods
safe_columns()
click to toggle source
# File lib/scopiform/helpers.rb, line 64 def safe_columns @safe_columns ||= columns rescue *safe_column_rescue_errors logger.warn "Unable to load columns for `#{name}`" @safe_columns = [] end
safe_columns_hash()
click to toggle source
# File lib/scopiform/helpers.rb, line 71 def safe_columns_hash @safe_columns_hash ||= columns_hash rescue *safe_column_rescue_errors logger.warn "Unable to load columns_hash for `#{name}`" @safe_columns_hash = {} end
Private Instance Methods
safe_column_rescue_errors()
click to toggle source
# File lib/scopiform/helpers.rb, line 80 def safe_column_rescue_errors [ ActiveRecord::StatementInvalid, Object.const_defined?('TinyTds') ? TinyTds::Error : nil, ] end