Class: ActiveRecord::Relation
- Inherits:
-
Object
- Object
- ActiveRecord::Relation
- Defined in:
- lib/praxis/extensions/attribute_filtering/active_record_patches/5x.rb,
lib/praxis/extensions/attribute_filtering/active_record_patches/6_0.rb
Instance Method Summary collapse
- #build_join_query(manager, buckets, join_type, aliases) ⇒ Object
-
#construct_join_dependency(associations, join_type) ⇒ Object
:nodoc:.
Instance Method Details
#build_join_query(manager, buckets, join_type, aliases) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/praxis/extensions/attribute_filtering/active_record_patches/5x.rb', line 17 def build_join_query(manager, buckets, join_type, aliases) buckets.default = [] association_joins = buckets[:association_join] stashed_joins = buckets[:stashed_join] join_nodes = buckets[:join_node].uniq string_joins = buckets[:string_join].map(&:strip).uniq join_list = join_nodes + convert_join_strings_to_ast(string_joins) alias_tracker = alias_tracker(join_list, aliases) # Praxis: inject references into the join dependency join_dependency = ActiveRecord::Associations::JoinDependency.new( klass, table, association_joins, references: references_values ) joins = join_dependency.join_constraints(stashed_joins, join_type, alias_tracker) joins.each { |join| manager.from(join) } manager.join_sources.concat(join_list) alias_tracker.aliases end |
#construct_join_dependency(associations, join_type) ⇒ Object
:nodoc:
8 9 10 11 12 13 14 |
# File 'lib/praxis/extensions/attribute_filtering/active_record_patches/6_0.rb', line 8 def construct_join_dependency including = eager_load_values + includes_values # Praxis: inject references into the join dependency ActiveRecord::Associations::JoinDependency.new( klass, table, including, references: references_values ) end |