def initialize(source, columns, options = {})
@source = source
@model = source.model
@columns = Array(columns)
@associations = {}
raise "Cannot define a field or attribute in #{source.model.name} with no columns. Maybe you are trying to index a field with a reserved name (id, name). You can fix this error by using a symbol rather than a bare name (:id instead of id)." if @columns.empty? || @columns.any? { |column| !column.respond_to?(:__stack) }
@alias = options[:as]
@faceted = options[:facet]
@admin = options[:admin]
@sortable = options[:sortable] || false
@value_source = options[:value]
@alias = @alias.to_sym unless @alias.blank?
@columns.each { |col|
@associations[col] = association_stack(col.__stack.clone).each { |assoc|
assoc.join_to(source.base)
}
}
end