class Pragma::AssociationIncluder::ActiveRecord
Public Class Methods
supports?(relation)
click to toggle source
# File lib/pragma/association_includer/active_record.rb, line 7 def supports?(relation) defined?(::ActiveRecord::Relation) && relation.is_a?(::ActiveRecord::Relation) end
Public Instance Methods
include_associations(expands)
click to toggle source
# File lib/pragma/association_includer/active_record.rb, line 12 def include_associations(expands) relation.includes(validate_associations( relation.model, destruct_associations(expands) )) end
Private Instance Methods
destruct_associations(expands)
click to toggle source
# File lib/pragma/association_includer/active_record.rb, line 21 def destruct_associations(expands) associations = {} expands.each do |expand| expand.split('.').inject(associations) do |accumulator, association| accumulator[association] ||= {} end end associations end
validate_associations(model, associations)
click to toggle source
# File lib/pragma/association_includer/active_record.rb, line 33 def validate_associations(model, associations) Hash[associations.map do |(key, value)| reflection = model.reflect_on_association(key.to_sym) reflection ? [key, validate_associations(reflection.klass, value)] : [false, false] end.select { |_, v| v }] end