Class: WorkCompletion::TubeRackCompletion
- Inherits:
-
LabwareCompletion
- Object
- LabwareCompletion
- WorkCompletion::TubeRackCompletion
- Defined in:
- app/models/work_completion/tube_rack_completion.rb
Overview
Class WorkCompletion::TubeRackCompletion provides the business logic for passing tubes within a tube rack, especially in the Limber pipelines. This has been pulled out of WorkCompletion itself to allow for separate behaviour for tube racks.
Instance Method Summary collapse
-
#connect_requests ⇒ void
Connects upstream requests to the target labware's racked tubes.
-
#detect_upstream_requests ⇒ ActiveRecord::Relation
Detects upstream customer requests associated with the target labware.
-
#target_tubes ⇒ ActiveRecord::Relation
Retrieves the target tubes associated with the target labware.
Instance Method Details
#connect_requests ⇒ void
This method returns an undefined value.
Connects upstream requests to the target labware's racked tubes.
Iterates through each upstream request and links it to the receptacle of each tube in the target labware's racked tubes.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'app/models/work_completion/tube_rack_completion.rb', line 21 do # NOTE: The following attribute is not required for Microarray Genotyping. # I think this might be broken and suggests that there should be separate classes for project: one for # next-gen sequencing that includes this attribute in it's metadata, and one for microarray genotyping # that doesn't. include ProjectManager::Associations include BudgetDivision::Associations custom_attribute(:project_cost_code, required: true) custom_attribute(:funding_comments) custom_attribute(:collaborators) custom_attribute(:external_funding_source) custom_attribute(:sequencing_budget_cost_centre) custom_attribute(:project_funding_model, in: PROJECT_FUNDING_MODELS) custom_attribute(:gt_committee_tracking_id) before_validation do |record| record.project_cost_code = nil if record.project_cost_code.blank? record.project_funding_model = nil if record.project_funding_model.blank? end end |
#detect_upstream_requests ⇒ ActiveRecord::Relation
Detects upstream customer requests associated with the target labware.
Queries the database for customer requests linked to the aliquots of the target labware.
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'app/models/work_completion/tube_rack_completion.rb', line 59 do # NOTE: The following attribute is not required for Microarray Genotyping. # I think this might be broken and suggests that there should be separate classes for project: one for # next-gen sequencing that includes this attribute in it's metadata, and one for microarray genotyping # that doesn't. include ProjectManager::Associations include BudgetDivision::Associations custom_attribute(:project_cost_code, required: true) custom_attribute(:funding_comments) custom_attribute(:collaborators) custom_attribute(:external_funding_source) custom_attribute(:sequencing_budget_cost_centre) custom_attribute(:project_funding_model, in: PROJECT_FUNDING_MODELS) custom_attribute(:gt_committee_tracking_id) before_validation do |record| record.project_cost_code = nil if record.project_cost_code.blank? record.project_funding_model = nil if record.project_funding_model.blank? end end |
#target_tubes ⇒ ActiveRecord::Relation
This method is similar to the target_wells method in
WorkCompletion::PlateCompletion,
Retrieves the target tubes associated with the target labware.
This method fetches the tubes that are racked within the target labware (i.e., tube rack), including their associated aliquots and requests. It filters the tubes based on the submission IDs of the requests.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'app/models/work_completion/tube_rack_completion.rb', line 41 do # NOTE: The following attribute is not required for Microarray Genotyping. # I think this might be broken and suggests that there should be separate classes for project: one for # next-gen sequencing that includes this attribute in it's metadata, and one for microarray genotyping # that doesn't. include ProjectManager::Associations include BudgetDivision::Associations custom_attribute(:project_cost_code, required: true) custom_attribute(:funding_comments) custom_attribute(:collaborators) custom_attribute(:external_funding_source) custom_attribute(:sequencing_budget_cost_centre) custom_attribute(:project_funding_model, in: PROJECT_FUNDING_MODELS) custom_attribute(:gt_committee_tracking_id) before_validation do |record| record.project_cost_code = nil if record.project_cost_code.blank? record.project_funding_model = nil if record.project_funding_model.blank? end end |