Class: Accession::SampleStatus
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Accession::SampleStatus
- Defined in:
- app/models/accession/sample_status.rb
Overview
Designed to track the status of Sample accessioning requests in order to provide feedback to users. It could be expanded to track other accessionable types in the future.
Associations: belongs_to :sample - The sample being accessioned
Attributes: sample_id: integer - The ID of the sample being accessioned status: string - The current status of the accessioning request (eg: 'queued', 'failed') message: text - Any message associated with the status (eg: error messages)
Class Method Summary collapse
-
.create_for_sample(sample, status = 'queued', message = nil) ⇒ Accession::SampleStatus
Creates a new Accession::SampleStatus record for the given sample with the specified status.
-
.find_latest!(sample, status: nil) ⇒ Accession::SampleStatus
Returns the most recent Accession::SampleStatus record for the given sample, optionally filtered by status.
-
.find_latest_and_update!(sample, status: nil, attributes: {}) ⇒ Accession::SampleStatus
Updates the most recent Accession::SampleStatus record for the given sample, optionally filtered by status.
Methods inherited from ApplicationRecord
alias_association, convert_labware_to_receptacle_for, find_by_id_or_name, find_by_id_or_name!
Methods included from Squishify
Class Method Details
.create_for_sample(sample, status = 'queued', message = nil) ⇒ Accession::SampleStatus
Creates a new Accession::SampleStatus record for the given sample with the specified status.
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'app/models/accession/sample_status.rb', line 25 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 |
.find_latest!(sample, status: nil) ⇒ Accession::SampleStatus
Returns the most recent Accession::SampleStatus record for the given sample, optionally filtered by status.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'app/models/accession/sample_status.rb', line 35 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 |
.find_latest_and_update!(sample, status: nil, attributes: {}) ⇒ Accession::SampleStatus
Updates the most recent Accession::SampleStatus record for the given sample, optionally filtered by status.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'app/models/accession/sample_status.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 |