Module: Queryko::RangeAttributes
- Included in:
- QueryObject
- Defined in:
- lib/queryko/range_attributes.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Class Method Details
.included(base) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/queryko/range_attributes.rb', line 3 def self.included(base) base.extend(ClassMethods) base.class_eval do class_attribute :range_attributes, default: Array.new, instance_writer: false self.range_attributes = [] private def filter_by_range_attributes self.range_attributes.each do |range_attribute| self.relation = attribute_max("#{range_attribute}_max") if params["#{range_attribute}_max".to_sym] self.relation = attribute_min("#{range_attribute}_min") if params["#{range_attribute}_min".to_sym] end end def attribute_min key # Calm down. column_name is whitelisted. check #add_range_attributes method column_name = key.to_s.gsub(/_min$/, "") relation.where("\"#{defined_table_name}\".\"#{column_name}\" >= ?", params[key.to_sym]) end def attribute_max key # Calm down. column_name is whitelisted. check #add_range_attributes method column_name = key.to_s.gsub(/_max$/, "") relation.where("\"#{defined_table_name}\".\"#{column_name}\" <= ?", params[key.to_sym]) end end end |