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 my modify 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

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


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

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

.standard_mx_tubeObject


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

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

.standard_sample_tubeObject


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

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

.stock_library_tubeObject


39
40
41
# File 'app/models/tube/purpose.rb', line 39

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

.stock_mx_tubeObject


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

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


26
27
28
29
30
31
# File 'app/models/tube/purpose.rb', line 26

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


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

def library_source_plates(_)
  []
end

#sibling_tubes(_tube) ⇒ Object


33
34
35
# File 'app/models/tube/purpose.rb', line 33

def sibling_tubes(_tube)
  nil
end

#stock_plate(_) ⇒ Object

Tubes of the general types have no stock plate!


18
19
20
# File 'app/models/tube/purpose.rb', line 18

def stock_plate(_)
  nil
end