Sha256: d4ab6585af1e7051219f2ef0c9d60f340a9065364423dac48f2c14573b1ae0aa
Contents?: true
Size: 1.65 KB
Versions: 1
Compression:
Stored size: 1.65 KB
Contents
class FacetedSearch::Base # Manage a set of Basefacets which facilitate complex # queries by storing search criteria found in request parameters # and recalling these parameters to refine scopes # See Ryan Bates RailsCast Episodes 112 & 119 for an explanation of # Anonymous Scopes and Session Models def initialize(session) raise Exception.new("initialize is a subclass responsibility") end def register(facet) @facets = [] if not @facets @facets << facet return facet end def create_keyword_facet(attributes) register(FacetedSearch::KeywordFacet.new(attributes, @model.table_name, @session)) end def create_numeric_range_facet(attribute) register(FacetedSearch::NumericRangeFacet.new(attribute, @model.table_name, @session)) end def refined(scope) @facets.each {|facet| scope = facet.refined(scope)} return scope end def paginate(scope=nil) scope = @model.scoped({}) if not scope scope = refined(scope) return scope.paginate({:page=>page}) end def to_params params={} @facets.each {|facet| params.merge(facet.to_params) } return params end def to_md5 require 'digest/md5' Digest::MD5.hexdigest(to_params.to_s) end def update_with(params) @facets.each {|facet| facet.update_with(params)} @session[page_param] = params[page_param] unless params[page_param].blank? end def order @session[order_param] end def page @session[page_param] end def order_param "#{@model.table_name}_order" end def order_by_param "#{@model.table_name}_order_by" end def page_param "#{@model.table_name}_page" end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jrhicks-static-generators-0.4.4 | rails_generators/static_app/templates/faceted_search/lib/base.rb |