module RiceCooker::Filter::ClassMethods

Public Instance Methods

filter_exists?(name) click to toggle source

Check if the given custom filter name already exists

# File lib/rice_cooker/filter.rb, line 127
def filter_exists?(name)
  !custom_filters[name].nil?
end
filtered(additional_filtering_params = {}) click to toggle source
# File lib/rice_cooker/filter.rb, line 73
def filtered(additional_filtering_params = {})
  cattr_accessor :filtering_keys
  cattr_accessor :custom_filters

  filter = FilterEngine.new(additional_filtering_params, resource_model)

  filter.register_bools

  # On recupere le default
  self.filtering_keys = filter.allowed_keys
  self.custom_filters = filter.params

  has_scope FILTER_PARAM, type: :hash, only: [:index] do |_controller, scope, value|
    scope = filter.process(value, scope, custom_filters, filtering_keys)
    scope
  end
end
register_bool_filter(name, field, description = nil) click to toggle source

Raccourci pour un filtre custom qui va filtrer si un champ est nil ou non.

name: le nom du filtre custom (ex: with_mark) field: le champ a filtrer sur `nil` ou pas `nil` (ex: final_mark) description: La description dans la doc

# File lib/rice_cooker/filter.rb, line 116
def register_bool_filter(name, field, description = nil)
  # raise "A '#{name}' filter already exists for class #{self.class}" unless filter_exists?(name)
  custom_filters[name] = {
    proc: FilterEngine.get_named_lambda(field),
    all: %w(true false),
    description: description || "Return only #{resource_model.to_s.underscore.humanize.downcase.pluralize} with a #{field}"
  }
  filtering_keys << name
end
register_filter(name, proc, all = nil, description = nil) click to toggle source

Ajoute un filtre custom

name: le nom du filtre custom (ex: with_mark) proc: le filtre, prend un arg `val` qui est un tableau des args du filtre all: l'ensemble des valeurs acceptées pour le filtre. Laisser nil ou pour tout accepter description: La description dans la doc

# File lib/rice_cooker/filter.rb, line 99
def register_filter(name, proc, all = nil, description = nil)
  # raise "A '#{name}' filter already exists for class #{self.class}" unless filter_exists?(name)
  custom_filters[name] = {
    proc: proc,
    all: all || [],
    description: description || ''
  }
  filtering_keys << name
end