Class: AssetBarcode

Inherits:
ApplicationRecord show all
Defined in:
app/models/asset_barcode.rb

Overview

This class only a concurrency safe counter to generate asset barcode Used for tubes

Class Method Summary collapse

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

extended

Class Method Details

.new_barcode(prefix = Tube.default_prefix) ⇒ String

Note:

The returned string does NOT include the prefix.

Generate a new Sanger barcode, namespaced with the given prefix

Examples:

Generating a new barcode

AssetBarcode.new_barcode #=> '12345'

Parameters:

  • prefix (String) (defaults to: Tube.default_prefix)

    The two letter prefix at the beginning of the barcode (default Tube.default_prefix, NT)

Returns:

  • (String)

    The number component of the new barcode in string format.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'app/models/asset_barcode.rb', line 15

 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