Class: Tube::Purpose

Inherits:
Purpose show all
Defined in:
app/models/tube/purpose.rb

Overview

Base class for the all tube purposes, describes the role the associated Tube is playing within the lab, and modifies its behaviour. This is not an abstract class, and can be used directly.

See Also:

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Purpose

#barcode_type, #prefix=, #set_default_barcode_prefix, #source_plate, #source_plates, #source_purpose_name=, #target_class

Methods included from Uuid::Uuidable

included, #unsaved_uuid!, #uuid

Methods included from SharedBehaviour::Named

included

Methods included from Purpose::Relationship::Associations

included

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

.standard_library_tubeObject



54
55
56
# File 'app/models/tube/purpose.rb', line 54

def standard_library_tube
  Tube::Purpose.create_with(target_type: 'LibraryTube').find_or_create_by!(name: 'Standard library')
end

.standard_mx_tubeObject



58
59
60
# File 'app/models/tube/purpose.rb', line 58

def standard_mx_tube
  Tube::StandardMx.create_with(target_type: 'MultiplexedLibraryTube').find_or_create_by!(name: 'Standard MX')
end

.standard_sample_tubeObject



50
51
52
# File 'app/models/tube/purpose.rb', line 50

def standard_sample_tube
  Tube::Purpose.create_with(target_type: 'SampleTube').find_or_create_by!(name: 'Standard sample')
end

.stock_library_tubeObject



42
43
44
# File 'app/models/tube/purpose.rb', line 42

def stock_library_tube
  Tube::Purpose.create_with(target_type: 'StockLibraryTube').find_or_create_by!(name: 'Stock library')
end

.stock_mx_tubeObject



46
47
48
# File 'app/models/tube/purpose.rb', line 46

def stock_mx_tube
  Tube::StockMx.create_with(target_type: 'StockMultiplexedLibraryTube').find_or_create_by!(name: 'Stock MX')
end

Instance Method Details

#create!(*args, &block) ⇒ Object



29
30
31
32
33
34
# File 'app/models/tube/purpose.rb', line 29

def create!(*args, &block)
  options = args.extract_options!
  options[:purpose] = self
  options[:barcode_prefix] ||= barcode_prefix
  target_class.create_with_barcode!(*args, options, &block).tap { |t| tubes << t }
end

#library_source_plates(_) ⇒ Object



25
26
27
# File 'app/models/tube/purpose.rb', line 25

def library_source_plates(_)
  []
end

#sibling_tubes(_tube) ⇒ Object



36
37
38
# File 'app/models/tube/purpose.rb', line 36

def sibling_tubes(_tube)
  nil
end

#stock_plate(_) ⇒ Object

Tubes of the general types have no stock plate!



21
22
23
# File 'app/models/tube/purpose.rb', line 21

def stock_plate(_)
  nil
end