class FortyFacets::FilterDefinition
Base class for the classes storing the definition of differently behaving filters
Attributes
search[RW]
Public Class Methods
new(search, path, options)
click to toggle source
# File lib/forty_facets/filter_definition.rb, line 8 def initialize search, path, options @search = search @path = [path].flatten @options = options init_associations end
Public Instance Methods
qualified_column_name()
click to toggle source
# File lib/forty_facets/filter_definition.rb, line 20 def qualified_column_name "#{table_name}.#{column_name}" end
request_param()
click to toggle source
# File lib/forty_facets/filter_definition.rb, line 16 def request_param path.join('-') end
Protected Instance Methods
init_associations()
click to toggle source
Walk the association path and gather required joins, table names etc.
# File lib/forty_facets/filter_definition.rb, line 27 def init_associations current_class = search.root_class current_association = nil joins = [] path.each do |current_attribute| current_association = current_class.reflect_on_association(current_attribute) if current_attribute == path.last if current_association joins << current_attribute @column_name = current_association.foreign_key else @column_name = current_attribute.to_s end else joins << current_attribute current_class = current_association.klass end end @table_name = current_class.table_name @origin_class = current_class @association = current_association @attribute = path.last @joins = joins.reverse.drop(1).inject(joins.last) { |a, n| { n => a } } end