Class: Refine::Filters::Criterion
- Inherits:
-
Object
- Object
- Refine::Filters::Criterion
- Includes:
- ActiveModel::Attributes, ActiveModel::Model
- Defined in:
- app/models/refine/filters/criterion.rb
Instance Attribute Summary collapse
-
#condition ⇒ Object
readonly
Returns the value of attribute condition.
-
#query ⇒ Object
Returns the value of attribute query.
Instance Method Summary collapse
- #component ⇒ Object
- #condition_attributes ⇒ Object
-
#initialize(**attrs) ⇒ Criterion
constructor
A new instance of Criterion.
- #meta ⇒ Object
- #meta_for_refinement_clause(refinement) ⇒ Object
- #refinements ⇒ Object
- #selected_clause ⇒ Object
- #selected_clause_meta ⇒ Object
- #validate! ⇒ Object
Constructor Details
#initialize(**attrs) ⇒ Criterion
20 21 22 23 |
# File 'app/models/refine/filters/criterion.rb', line 20 def initialize(**attrs) super initialize_condition! end |
Instance Attribute Details
#condition ⇒ Object (readonly)
Returns the value of attribute condition.
18 19 20 |
# File 'app/models/refine/filters/criterion.rb', line 18 def condition @condition end |
#query ⇒ Object
Returns the value of attribute query.
15 16 17 |
# File 'app/models/refine/filters/criterion.rb', line 15 def query @query end |
Instance Method Details
#component ⇒ Object
67 68 69 |
# File 'app/models/refine/filters/criterion.rb', line 67 def component condition.component.underscore end |
#condition_attributes ⇒ Object
38 39 40 41 |
# File 'app/models/refine/filters/criterion.rb', line 38 def condition_attributes result = condition&.to_array(allow_errors: true) result.to_h end |
#meta ⇒ Object
43 44 45 |
# File 'app/models/refine/filters/criterion.rb', line 43 def condition_attributes[:meta] end |
#meta_for_refinement_clause(refinement) ⇒ Object
59 60 61 62 63 64 65 |
# File 'app/models/refine/filters/criterion.rb', line 59 def (refinement) = refinement[:meta] selected_clause_id = input[refinement[:id].to_sym][:clause] clauses = [:clauses] selected_clause = clauses.find { |clause| clause[:id] == selected_clause_id } selected_clause[:meta] end |
#refinements ⇒ Object
55 56 57 |
# File 'app/models/refine/filters/criterion.rb', line 55 def refinements condition.refinements_to_array end |
#selected_clause ⇒ Object
47 48 49 |
# File 'app/models/refine/filters/criterion.rb', line 47 def selected_clause input[:clause] end |
#selected_clause_meta ⇒ Object
51 52 53 |
# File 'app/models/refine/filters/criterion.rb', line 51 def [:clauses].find {|c| c[:id] == selected_clause }[:meta] end |
#validate! ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'app/models/refine/filters/criterion.rb', line 25 def validate! errors.clear return true if type == "conjunction" begin query_for_validate = filter.initial_query || filter.model.all condition&.apply(input, filter.table, query_for_validate) rescue Refine::Conditions::Errors::ConditionClauseError => e e.errors.each do |error| errors.add(:base, :invalid, message: error.) end end end |