module HQ::GraphQL::Ext::ActiveRecordExtensions::ClassMethods
Attributes
auto_load_associations[RW]
auto_load_attributes[RW]
auto_load_enums[RW]
model_name[RW]
Public Instance Methods
lazy_load(&block)
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 24 def lazy_load(&block) @lazy_load ||= [] if block ::HQ::GraphQL.lazy_load(self) @lazy_load << block end @lazy_load end
lazy_load!()
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 33 def lazy_load! lazy_load.shift.call while lazy_load.length > 0 @lazy_load = nil end
model_associations()
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 52 def model_associations model_associations = [] enums = model_klass.reflect_on_all_associations.select { |a| is_enum?(a) } associatons = model_klass.reflect_on_all_associations - enums if auto_load_enums model_associations.concat(enums) end if auto_load_associations model_associations.concat(associatons) end model_associations.concat(added_associations.map { |association| association_from_model(association) }).uniq # validate removed_associations exist removed_associations.each { |association| association_from_model(association) } model_associations.reject { |a| removed_associations.include?(a.name.to_sym) }.sort_by(&:name) end
model_columns()
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 38 def model_columns model_columns = if auto_load_attributes model_klass.columns else added_attributes.map { |attr| column_from_model(attr) } end # validate removed_attributes exist removed_attributes.each { |attr| column_from_model(attr) } model_columns.reject { |c| removed_attributes.include?(c.name.to_sym) }.sort_by(&:name) end
Private Instance Methods
add_associations(*associations)
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 91 def add_associations(*associations) validate_model! added_associations.concat associations.map(&:to_sym) end
Also aliased as: add_association
add_attributes(*attrs)
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 75 def add_attributes(*attrs) validate_model! added_attributes.concat attrs.map(&:to_sym) end
added_associations()
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 123 def added_associations @added_associations ||= [] end
added_attributes()
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 115 def added_attributes @added_attributes ||= [] end
association_from_model(association)
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 111 def association_from_model(association) model_klass.reflect_on_association(association) || raise(ActiveRecordError, ActiveRecordError::MISSING_ASSOC_MSG % { model: model_name, assoc: association }) end
camelize(name)
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 131 def camelize(name) name.to_s.camelize(:lower) end
column_from_model(attr)
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 107 def column_from_model(attr) model_klass.columns_hash[attr.to_s] || raise(ActiveRecordError, ActiveRecordError::MISSING_ATTR_MSG % { model: model_name, attr: attr }) end
is_enum?(association)
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 135 def is_enum?(association) ::HQ::GraphQL.enums.include?(association.klass) end
model_klass()
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 103 def model_klass @model_klass ||= model_name.constantize end
remove_associations(*associations)
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 97 def remove_associations(*associations) validate_model! removed_associations.concat associations.map(&:to_sym) end
Also aliased as: remove_association
remove_attributes(*attrs)
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 83 def remove_attributes(*attrs) validate_model! removed_attributes.concat attrs.map(&:to_sym) end
removed_associations()
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 127 def removed_associations @removed_associations ||= [] end
removed_attributes()
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 119 def removed_attributes @removed_attributes ||= [] end
validate_model!()
click to toggle source
# File lib/hq/graphql/ext/active_record_extensions.rb, line 139 def validate_model! lazy_load do model_name || raise(ActiveRecordError, ActiveRecordError::MISSING_MODEL_MSG) end end