Class: PickList::RecordCache::ByLabware
- Inherits:
-
PickList::RecordCache
- Object
- PickList::RecordCache
- PickList::RecordCache::ByLabware
- Defined in:
- app/models/pick_list/record_cache.rb
Overview
Pick-list cache where the source_receptacles are indicated indirectly via source_labware_id: or source_labware_barcode: A pick will be generated for all aliquot containing receptacles in the labware
Constant Summary collapse
- KEYS =
%i[source_labware_id source_labware_barcode study_id project_id].freeze
Constants inherited from PickList::RecordCache
Instance Method Summary collapse
- #convert(entry) ⇒ Object
- #receptacles_for(source_labware_id, source_labware_barcode) ⇒ Object
-
#source_receptacle_by_labware_barcode(barcode) ⇒ Object
This is a little complicated.
- #source_receptacle_by_labware_id(id) ⇒ Object
Methods inherited from PickList::RecordCache
Constructor Details
This class inherits a constructor from PickList::RecordCache
Instance Method Details
#convert(entry) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'app/models/pick_list/record_cache.rb', line 38 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 |
#receptacles_for(source_labware_id, source_labware_barcode) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'app/models/pick_list/record_cache.rb', line 78 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 |
#source_receptacle_by_labware_barcode(barcode) ⇒ Object
This is a little complicated. We can easily find receptacles by the labware barcode, but the problem is the labware itself may have more than one barcode associated with it. If we then group by barcode, which one do we use? The select here adds a found_barcode attribute to the returned record, which matches the barcode we originally looked up the well by. As we're about to use the exact same barcode to pull the information back out the cache, we're fine.
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'app/models/pick_list/record_cache.rb', line 66 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 |
#source_receptacle_by_labware_id(id) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'app/models/pick_list/record_cache.rb', line 48 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 |