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

Methods included from Warren::BroadcastMessages

#broadcast, included, #queue_associated_for_broadcast, #queue_for_broadcast, #warren

Class Method Details

.standard_library_tubeObject


54
55
56
57
58
# 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


60
61
62
63
64
# File 'app/models/tube/purpose.rb', line 60

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

.standard_sample_tubeObject


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

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

.stock_library_tubeObject


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

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

.stock_mx_tubeObject


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

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


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

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


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

def library_source_plates(_)
  []
end

#sibling_tubes(_tube) ⇒ Object


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

def sibling_tubes(_tube)
  nil
end

#stock_plate(_) ⇒ Object

Tubes of the general types have no stock plate!


15
16
17
# File 'app/models/tube/purpose.rb', line 15

def stock_plate(_)
  nil
end