class FortyFacets::FacetFilterDefinition::BelongsToFilter
Public Instance Methods
build_scope()
click to toggle source
# File lib/forty_facets/filter/facet_filter_definition.rb, line 92 def build_scope return Proc.new { |base| base } if empty? Proc.new do |base| base.joins(definition.joins).where(definition.qualified_column_name => values) end end
facet()
click to toggle source
# File lib/forty_facets/filter/facet_filter_definition.rb, line 99 def facet my_column = definition.qualified_column_name query = "#{my_column} AS foreign_id, count(#{my_column}) AS occurrences" counts = without.result(skip_ordering: true).distinct.joins(definition.joins).select(query).group(my_column) counts.includes_values = [] entities_by_id = definition.association.klass.unscoped.find(counts.map(&:foreign_id)).group_by(&:id) facet = counts.map do |count| facet_entity = entities_by_id[count.foreign_id].first is_selected = selected.include?(facet_entity) FacetValue.new(facet_entity, count.occurrences, is_selected) end order_facet!(facet) end