Module: Pipeloader::FieldSelects
- Defined in:
- lib/pipeloader/field_exact.rb
Overview
Monkey-patches ‘field` to (a) accept the `selects:` escape hatch and (b) attach the projection extension when this field’s type has opted in.
Instance Attribute Summary collapse
-
#pipeloader_selects ⇒ Object
readonly
Returns the value of attribute pipeloader_selects.
Instance Method Summary collapse
Instance Attribute Details
#pipeloader_selects ⇒ Object (readonly)
Returns the value of attribute pipeloader_selects.
29 30 31 |
# File 'lib/pipeloader/field_exact.rb', line 29 def pipeloader_selects @pipeloader_selects end |
Instance Method Details
#initialize(*args, selects: nil, owner: nil, extensions: [], **kwargs, &block) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/pipeloader/field_exact.rb', line 31 def initialize(*args, selects: nil, owner: nil, extensions: [], **kwargs, &block) @pipeloader_selects = selects && Array(selects).map(&:to_s) # At most one extension: field-exact (projects + fuses) wins over auto-fuse # (whole-row fuses only). Both bail to plain resolution for non-associations. if Pipeloader.field_exact || (owner.respond_to?(:pipeloader_field_exact?) && owner.pipeloader_field_exact?) extensions = extensions + [ProjectionExtension] elsif Pipeloader.auto_fuse extensions = extensions + [FusionExtension] end super(*args, owner: owner, extensions: extensions, **kwargs, &block) end |