module Querifier::Queries::Where
Public Class Methods
included(klass)
click to toggle source
# File lib/querifier/queries/where.rb, line 45 def self.included(klass) klass.extend(ClassMethods) end
Public Instance Methods
collection()
click to toggle source
Calls superclass method
# File lib/querifier/queries/where.rb, line 4 def collection super filter @collection end
filter()
click to toggle source
# File lib/querifier/queries/where.rb, line 10 def filter return self if @filtered filter_params.each do |(attribute, _)| value = filter_value(attribute) send("filter_by_#{attribute}", value) if value end @filtered = true self end
filter_by(name, value)
click to toggle source
# File lib/querifier/queries/where.rb, line 24 def filter_by(name, value) filter_content = filter_value(name) @collection = @collection.where("#{name} LIKE ?", "%#{filter_content}%") if filter_content self end
filter_params()
click to toggle source
# File lib/querifier/queries/where.rb, line 39 def filter_params @filter_params ||= params.fetch(Config.where_param, {}).select { |(k, _)| valid_option? k.to_sym } end
filter_value(key)
click to toggle source
# File lib/querifier/queries/where.rb, line 20 def filter_value(key) filter_params.fetch(key.to_sym, nil) end
method_missing(message, *args, &block)
click to toggle source
Calls superclass method
# File lib/querifier/queries/where.rb, line 30 def method_missing(message, *args, &block) return filter_by(Regexp.last_match(1).to_sym, args.first) if message.to_s =~ /filter_by_(.*)/ # rubocop:disable Performance/RegexpMatch, Metrics/LineLength super end
valid_option?(option)
click to toggle source
# File lib/querifier/queries/where.rb, line 35 def valid_option?(option) self.class.where_attributes.include?(option.to_sym) end