Class: Plutonium::Query::Filters::Association
- Inherits:
-
Plutonium::Query::Filter
- Object
- Base
- Plutonium::Query::Filter
- Plutonium::Query::Filters::Association
- Defined in:
- lib/plutonium/query/filters/association.rb
Overview
Select filter for association records
Instance Attribute Summary
Attributes inherited from Plutonium::Query::Filter
Instance Method Summary collapse
- #apply(scope, value:) ⇒ Object
- #customize_inputs ⇒ Object
-
#initialize(class_name: nil, resource_class: nil, scope: nil, multiple: false) ⇒ Association
constructor
A new instance of Association.
Methods inherited from Plutonium::Query::Filter
Methods included from Definition::Presentable
Constructor Details
#initialize(class_name: nil, resource_class: nil, scope: nil, multiple: false) ⇒ Association
Returns a new instance of Association.
19 20 21 22 23 24 25 |
# File 'lib/plutonium/query/filters/association.rb', line 19 def initialize(class_name: nil, resource_class: nil, scope: nil, multiple: false, **) super(**) @class_name = class_name @resource_class = resource_class @scope_proc = scope @multiple = multiple end |
Instance Method Details
#apply(scope, value:) ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/plutonium/query/filters/association.rb', line 27 def apply(scope, value:) return scope if value.blank? foreign_key = :"#{key}_id" if @multiple && value.is_a?(Array) scope.where(foreign_key => value.reject(&:blank?)) else scope.where(foreign_key => value) end end |
#customize_inputs ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/plutonium/query/filters/association.rb', line 38 def customize_inputs input :value, as: :resource_select, association_class: association_class, multiple: @multiple, include_blank: @multiple ? false : "All" end |