# File lib/thinking_sphinx/join.rb, line 5 def initialize(source, column) @source = source @column = column @associations = association_stack(column.__path.clone).each { |assoc| assoc.join_to(source.base) } source.joins << self end
Gets a stack of associations for a specific path.
# File lib/thinking_sphinx/join.rb, line 20 def association_stack(path, parent = nil) assocs = [] if parent.nil? assocs = @source.association(path.shift) else assocs = parent.children(path.shift) end until path.empty? point = path.shift assocs = assocs.collect { |assoc| assoc.children(point) }.flatten end assocs end