Class: Quo::Composing::QueryClassesStrategy
- Inherits:
-
ClassStrategy
- Object
- BaseStrategy
- ClassStrategy
- Quo::Composing::QueryClassesStrategy
- Defined in:
- lib/quo/composing/query_classes_strategy.rb,
sig/generated/quo/composing/query_classes_strategy.rbs
Overview
Strategy for composing two Query classes
Instance Method Summary collapse
- #applicable?(left, right) ⇒ void
- #compose(chosen_superclass, left_query_class, right_query_class, joins: nil, left_spec: nil, right_spec: nil) ⇒ void
Methods inherited from ClassStrategy
#assign_query_metadata, #collect_properties, #create_composed_class, #validate_query_classes
Instance Method Details
#applicable?(left, right) ⇒ void
This method returns an undefined value.
15 16 17 18 19 |
# File 'lib/quo/composing/query_classes_strategy.rb', line 15 def applicable?(left, right) left.respond_to?(:<) && right.respond_to?(:<) && (left < Quo::Query || left.is_a?(::ActiveRecord::Relation)) && (right < Quo::Query || right.is_a?(::ActiveRecord::Relation)) end |
#compose(chosen_superclass, left_query_class, right_query_class, joins: nil, left_spec: nil, right_spec: nil) ⇒ void
This method returns an undefined value.
29 30 31 32 33 34 35 |
# File 'lib/quo/composing/query_classes_strategy.rb', line 29 def compose(chosen_superclass, left_query_class, right_query_class, joins: nil, left_spec: nil, right_spec: nil) validate_query_classes(left_query_class, right_query_class) props = collect_properties(chosen_superclass, left_query_class, right_query_class) klass = create_composed_class(chosen_superclass, props) (klass, left_query_class, right_query_class, joins, left_spec, right_spec) klass end |