Module: RiceCooker::Filter::ClassMethods

Defined in:
lib/rice_cooker/filter.rb

Instance Method Summary collapse

Instance Method Details

#filter_exists?(name) ⇒ Boolean

Check if the given custom filter name already exists

Returns:

  • (Boolean)


127
128
129
# File 'lib/rice_cooker/filter.rb', line 127

def filter_exists?(name)
  !custom_filters[name].nil?
end

#filtered(additional_filtering_params = {}) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# 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) ⇒ Object

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



116
117
118
119
120
121
122
123
124
# 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) ⇒ Object

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



99
100
101
102
103
104
105
106
107
# 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