Class: SampleFilter::ParamsSet
- Inherits:
-
Object
- Object
- SampleFilter::ParamsSet
- Defined in:
- lib/sample_filter/params_set.rb
Constant Summary collapse
- FILTER_TYPES =
[:string, :number, :date, :boolean, :list, :sorting]
Instance Attribute Summary collapse
-
#fields ⇒ Object
readonly
Returns the value of attribute fields.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
Instance Method Summary collapse
- #default_values ⇒ Object
-
#initialize(options) ⇒ ParamsSet
constructor
A new instance of ParamsSet.
- #permit_params(params) ⇒ Object
- #type_of(field) ⇒ Object
- #update_attributes(params) ⇒ Object
- #values_for(field) ⇒ Object
Constructor Details
#initialize(options) ⇒ ParamsSet
Returns a new instance of ParamsSet.
7 8 9 10 11 12 |
# File 'lib/sample_filter/params_set.rb', line 7 def initialize() = .deep_symbolize_keys @fields = .keys define_and_assign_attr_accessors end |
Instance Attribute Details
#fields ⇒ Object (readonly)
Returns the value of attribute fields.
5 6 7 |
# File 'lib/sample_filter/params_set.rb', line 5 def fields @fields end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
5 6 7 |
# File 'lib/sample_filter/params_set.rb', line 5 def end |
Instance Method Details
#default_values ⇒ Object
35 36 37 |
# File 'lib/sample_filter/params_set.rb', line 35 def default_values Hash[fields.map { |field| [field, default_value_for(field)] }].compact end |
#permit_params(params) ⇒ Object
29 30 31 32 33 |
# File 'lib/sample_filter/params_set.rb', line 29 def permit_params(params) return {} unless params.present? _fields = fields.map{ |f| type_of(f).eql?(:date) ? Hash[f, [:from, :to]] : f } params.permit(_fields).to_hash.deep_symbolize_keys end |
#type_of(field) ⇒ Object
14 15 16 |
# File 'lib/sample_filter/params_set.rb', line 14 def type_of(field) [field.to_sym][:type].try(:to_sym) end |
#update_attributes(params) ⇒ Object
39 40 41 42 |
# File 'lib/sample_filter/params_set.rb', line 39 def update_attributes(params) _params = permit_params(params) fields.each { |field| instance_variable_set("@#{field}", _params[field] || default_value_for(field)) } end |
#values_for(field) ⇒ Object
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/sample_filter/params_set.rb', line 18 def values_for(field) values = [field.to_sym][:values] return unless values.present? if values.is_a?(Hash) values.stringify_keys elsif values.is_a?(Array) values.map(&:to_s) end end |