Module: V1::Shared::SourceIdentifierFilterable
- Extended by:
- ActiveSupport::Concern
- Included in:
- Ont::RequestResource, Pacbio::LibraryResource, Pacbio::RequestResource
- Defined in:
- app/resources/v1/shared/source_identifier_filterable.rb
Overview
SourceIdentifierFilterable
This module provides functionality for filtering records based on source identifiers. A source identifier can be a plate barcode, tube barcode, or a combination of plate barcode and well position. Models that include this module will have methods to filter records using these identifiers.
Methods:
-
apply_source_identifier_filter(records, value, joins: { plate: :plate, tube: :tube, well: :well })
-
Filters the given records based on the provided source identifiers.
-
Parameters:
-
records: The ActiveRecord relation to filter.
-
value: An array of source identifiers to filter by.
-
joins: A hash of join associations with default values.
-
plate: The association name for joining with the plate table (default: :plate).
-
tube: The association name for joining with the tube table (default: :tube).
-
well: The association name for joining with the well table (default: :well).
-
Example Usage:
class MyModel < ApplicationRecord include SourceIdentifierFilterable end
records = MyModel.all source_identifiers = [‘PLATE123’, ‘TUBE456’, ‘PLATE789:A1’] filtered_records = MyModel.apply_source_identifier_filter(records, source_identifiers)
# Custom join associations filtered_records = MyModel.apply_source_identifier_filter(records, source_identifiers, joins: { plate: :source_plate, tube: :source_tube, well: :source_well })