Class: Filterrific::ParamSet
- Inherits:
-
Object
- Object
- Filterrific::ParamSet
- Defined in:
- lib/filterrific/param_set.rb
Overview
FilterParamSet is a container to store FilterParams for a resource class that is filterrific
Instance Attribute Summary collapse
-
#resource_class ⇒ Object
Returns the value of attribute resource_class.
Instance Method Summary collapse
-
#customized? ⇒ Boolean
Returns true if this Filterrific::ParamSet is not the model’s default.
-
#initialize(resource_class, filterrific_params = {}) ⇒ ParamSet
constructor
A new instance of ParamSet.
-
#to_hash ⇒ Object
Returns FilterrificParams as hash (used for URL params and serialization).
Constructor Details
#initialize(resource_class, filterrific_params = {}) ⇒ ParamSet
Returns a new instance of ParamSet.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/filterrific/param_set.rb', line 8 def initialize(resource_class, filterrific_params = {}) self.resource_class = resource_class # use either passed in options or resource class' default list_options # don't merge them. This causes trouble if an option is set to nil # by the user, then it will be overriden by default list_options # You might wonder "what if I want to change only one thing from the defaults?" # Persistence, baby. By the time you submit changes to one dimension, all the others # will be already initialized with the defaults. filterrific_params = resource_class.default_filterrific_params if filterrific_params.blank? # force all keys to strings filterrific_params.stringify_keys! # condition filterrific_params filterrific_params.each do |key, val| case when val.is_a?(Proc) # evaulate Procs filterrific_params[key] = val.call when val.is_a?(Array) # type cast integers filterrific_params[key] = filterrific_params[key].map { |e| e =~ /^\d+$/ ? e.to_i : e } when val =~ /^\d+$/ # type cast integers filterrific_params[key] = filterrific_params[key].to_i end end # Define attr_accessor for each FilterrificScope # on Filterrific::ParamSet instance and assign values from options resource_class.filterrific_scope_names.each do |scope_name| self.class.send(:attr_accessor, scope_name) v = filterrific_params[scope_name.to_s] self.send("#{ scope_name }=", v) if v.present? end end |
Instance Attribute Details
#resource_class ⇒ Object
Returns the value of attribute resource_class.
6 7 8 |
# File 'lib/filterrific/param_set.rb', line 6 def resource_class @resource_class end |
Instance Method Details
#customized? ⇒ Boolean
Returns true if this Filterrific::ParamSet is not the model’s default.
67 68 69 |
# File 'lib/filterrific/param_set.rb', line 67 def customized? resource_class.default_filterrific_params != to_hash end |
#to_hash ⇒ Object
Returns FilterrificParams as hash (used for URL params and serialization)
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/filterrific/param_set.rb', line 49 def to_hash {}.tap { |h| resource_class.filterrific_scope_names.each do |scope_name| param_value = self.send(scope_name) case when param_value.blank? # do nothing when param_value.is_a?(Proc) # evaluate Proc so it can be serialized h[scope_name.to_s] = param_value.call else h[scope_name.to_s] = param_value end end } end |