Module: Filterable
- Defined in:
- lib/filterable.rb,
lib/filterable/target.rb,
lib/filterable/concern.rb,
lib/filterable/datable.rb,
lib/filterable/railtie.rb,
lib/filterable/version.rb,
lib/filterable/scopable.rb,
lib/filterable/sortable.rb,
lib/filterable/equatable.rb,
lib/filterable/matchable.rb,
lib/filterable/rangeable.rb,
lib/filterable/togglable.rb,
lib/filterable/attachable.rb,
lib/filterable/datable/after.rb,
lib/filterable/datable/range.rb,
lib/filterable/datable/since.rb,
lib/filterable/datable/before.rb,
lib/filterable/concerns/datable.rb,
lib/filterable/concerns/scopable.rb,
lib/filterable/concerns/sortable.rb,
lib/filterable/rangeable/maximum.rb,
lib/filterable/rangeable/minimum.rb,
lib/filterable/concerns/equatable.rb,
lib/filterable/concerns/matchable.rb,
lib/filterable/concerns/rangeable.rb,
lib/filterable/concerns/togglable.rb,
lib/filterable/matchable/contains.rb,
lib/filterable/concerns/attachable.rb,
lib/filterable/matchable/ends_with.rb,
lib/filterable/value_normalization.rb,
lib/filterable/matchable/starts_with.rb,
lib/filterable/declarations_validator.rb,
lib/filterable/attribute_normalization.rb
Overview
Declarative, whitelisted query filtering and ordering for ActiveRecord models.
In a Rails application the Railtie auto-includes the building blocks into every model, so a model only declares its columns:
class MovementDetail < ApplicationRecord
datable :value_date, :booking_date
sortable :value_date, :gross_amount_cents
equatable :reference
rangeable :gross_amount_cents
scopable :cheaper_than
togglable :priced
end
MovementDetail.filterable(filters: { value_date: { after: '2026-02-01' }, sort: '-value_date' })
Outside Rails, include the pieces manually:
include Filterable::Concern
include Filterable::Concerns::Datable
include Filterable::Concerns::Equatable
include Filterable::Concerns::Rangeable
include Filterable::Concerns::Scopable
include Filterable::Concerns::Sortable
include Filterable::Concerns::Togglable
Defined Under Namespace
Modules: Attachable, AttributeNormalization, Concern, Concerns, Datable, Equatable, Matchable, Rangeable, Scopable, Sortable, Target, Togglable, ValueNormalization Classes: DeclarationsValidator, Error
Constant Summary collapse
- VERSION =
'1.0.0'