Sha256: f6807a868f93d0ac0f5d7e748797863208a59bc46897b24d183b5c6bcc7ba2a0
Contents?: true
Size: 1.47 KB
Versions: 10
Compression:
Stored size: 1.47 KB
Contents
# Creates a base for building Tenon::<Model>Filterer classes. class Tenon::BaseFilterer attr_reader :scope attr_reader :params def initialize(scope, params) @scope = scope @params = params end def filter scope end private def eq(field, value) return scope unless value.present? scope.where("#{field} IN (?)", value) end def ilike(field, value) return scope unless value.present? scope.where("#{field} ILIKE ?", "%#{value}%") end def lt(field, value) return scope unless value.present? scope.where("#{field} < ?", value) end def gt(field, value) return scope unless value.present? scope.where("#{field} > ?", value) end def lte(field, value) return scope unless value.present? scope.where("#{field} <= ?", value) end def gte(field, value) return scope unless value.present? scope.where("#{field} >= ?", value) end def order(field, direction) direction ||= 'asc' # Do this manually in case nil is passed in return scope unless field.in?(allowed_order_fields) return scope unless direction.downcase.in?(['asc', 'desc']) scope.order("#{field} #{direction}") end def reorder(field, direction) direction ||= 'asc' # Do this manually in case nil is passed in return scope unless field.in?(allowed_order_fields) return scope unless direction.downcase.in?(['asc', 'desc']) scope.reorder("#{field} #{direction}") end def allowed_order_fields [] end end
Version data entries
10 entries across 10 versions & 1 rubygems