Module: Filterrific::ActiveRecordExtension
- Defined in:
- lib/filterrific/active_record_extension.rb
Instance Method Summary collapse
-
#filterrific(opts) ⇒ void
Adds Filterrific behavior to class when called like so:.
-
#filterrific_find(filterrific_param_set) ⇒ ActiveRecord::Relation
Returns ActiveRecord relation based on filterrific_param_set.
Instance Method Details
#filterrific(opts) ⇒ void
This method returns an undefined value.
Adds Filterrific behavior to class when called like so:
filterrific(
:available_filters => [:sorted_by, :search_query, :with_state]
:default_filter_params => { :sorted_by => "created_at_asc" },
)
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/filterrific/active_record_extension.rb', line 19 def filterrific(opts) class << self attr_accessor :filterrific_available_filters attr_accessor :filterrific_default_filter_params end self.filterrific_available_filters = [] opts.stringify_keys! # define_sorted_by_scope(opts['sorted_by']) if opts['sorted_by'] # define_search_query_scope(opts['search_query']) if opts['search_query'] assign_filterrific_available_filters(opts) validate_filterrific_available_filters assign_filterrific_default_filter_params(opts) validate_filterrific_default_filter_params end |
#filterrific_find(filterrific_param_set) ⇒ ActiveRecord::Relation
Returns ActiveRecord relation based on filterrific_param_set. Use like so: ‘ModelClass.filterrific_find(@filterrific)`
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/filterrific/active_record_extension.rb', line 42 def filterrific_find(filterrific_param_set) unless filterrific_param_set.is_a?(Filterrific::ParamSet) raise( ArgumentError, "Invalid Filterrific::ParamSet: #{filterrific_param_set.inspect}" ) end # Initialize ActiveRecord::Relation ar_rel = if ActiveRecord::Relation === self # self is already an ActiveRecord::Relation, use as is self else # Send `:all` to class to get an ActiveRecord::Relation all end # Apply filterrific params filterrific_available_filters.each do |filter_name| filter_param = filterrific_param_set.send(filter_name) next if filter_param.blank? # skip blank filter_params ar_rel = ar_rel.send(filter_name, filter_param) end ar_rel end |