class Ransack::Context

def association_path(str, base = @base)

def association_path(str, base = @base)
  base = klassify(base)
  str ||= ''.freeze
  path = []
  segments = str.split(Constants::UNDERSCORE)
  association_parts = []
  unless segments.empty?
    while !segments.empty? &&
          !base.columns_hash[segments.join(Constants::UNDERSCORE)] &&
          association_parts << segments.shift
      assoc, klass = unpolymorphize_association(
        association_parts.join(Constants::UNDERSCORE)
      )
      next unless found_assoc = get_association(assoc, base)
      path += association_parts
      association_parts = []
      base = klassify(klass || found_assoc)
    end
  end
  path.join(Constants::UNDERSCORE)
end