Class: BiocurationClassification

Inherits:
ApplicationRecord show all
Includes:
Housekeeping, Shared::IsData
Defined in:
app/models/biocuration_classification.rb

Overview

A BiocurationClassification classifies a CollectionObject within a collection into some biologically-related category. See BiocurationClass.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Shared::IsData

#errors_excepting, #full_error_messages_excepting, #identical, #is_community?, #is_destroyable?, #is_editable?, #is_in_use?, #is_in_users_projects?, #metamorphosize, #similar

Methods included from Housekeeping

#has_polymorphic_relationship?

Methods inherited from ApplicationRecord

transaction_with_retry

Instance Attribute Details

#biocuration_class_idInteger

the biocuration class ID

Returns:

  • (Integer)


20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'app/models/biocuration_classification.rb', line 20

class BiocurationClassification < ApplicationRecord
  include Housekeeping
  include Shared::IsData

  acts_as_list scope: [:biological_collection_object_id, :project_id]

  belongs_to :biocuration_class, inverse_of: :biocuration_classifications
  belongs_to :biological_collection_object, class_name: '::CollectionObject::BiologicalCollectionObject', inverse_of: :biocuration_classifications

  validates_presence_of :biocuration_class, :biological_collection_object
  validates_uniqueness_of :biocuration_class, scope: [:biological_collection_object]

  # Janky, but here for now
  after_save :update_dwc_occurrence
  after_destroy :revert_dwc_occurrence

  protected

  def update_dwc_occurrence
    if biocuration_class.uri == DWC_FOSSIL_URI
      biological_collection_object.dwc_occurrence&.update_attribute(:basisOfRecord, 'FossilSpecimen')
    end
  end

  def revert_dwc_occurrence
    if biocuration_class.uri == DWC_FOSSIL_URI
      biological_collection_object.dwc_occurrence&.update_attribute(:basisOfRecord, 'PreservedSpecimen')
    end
  end

end

#biological_collection_object_idInteger

the biological collection object ID

Returns:

  • (Integer)


20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'app/models/biocuration_classification.rb', line 20

class BiocurationClassification < ApplicationRecord
  include Housekeeping
  include Shared::IsData

  acts_as_list scope: [:biological_collection_object_id, :project_id]

  belongs_to :biocuration_class, inverse_of: :biocuration_classifications
  belongs_to :biological_collection_object, class_name: '::CollectionObject::BiologicalCollectionObject', inverse_of: :biocuration_classifications

  validates_presence_of :biocuration_class, :biological_collection_object
  validates_uniqueness_of :biocuration_class, scope: [:biological_collection_object]

  # Janky, but here for now
  after_save :update_dwc_occurrence
  after_destroy :revert_dwc_occurrence

  protected

  def update_dwc_occurrence
    if biocuration_class.uri == DWC_FOSSIL_URI
      biological_collection_object.dwc_occurrence&.update_attribute(:basisOfRecord, 'FossilSpecimen')
    end
  end

  def revert_dwc_occurrence
    if biocuration_class.uri == DWC_FOSSIL_URI
      biological_collection_object.dwc_occurrence&.update_attribute(:basisOfRecord, 'PreservedSpecimen')
    end
  end

end

#positionInteger

Returns used with acts_as_list.

Returns:

  • (Integer)

    used with acts_as_list



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'app/models/biocuration_classification.rb', line 20

class BiocurationClassification < ApplicationRecord
  include Housekeeping
  include Shared::IsData

  acts_as_list scope: [:biological_collection_object_id, :project_id]

  belongs_to :biocuration_class, inverse_of: :biocuration_classifications
  belongs_to :biological_collection_object, class_name: '::CollectionObject::BiologicalCollectionObject', inverse_of: :biocuration_classifications

  validates_presence_of :biocuration_class, :biological_collection_object
  validates_uniqueness_of :biocuration_class, scope: [:biological_collection_object]

  # Janky, but here for now
  after_save :update_dwc_occurrence
  after_destroy :revert_dwc_occurrence

  protected

  def update_dwc_occurrence
    if biocuration_class.uri == DWC_FOSSIL_URI
      biological_collection_object.dwc_occurrence&.update_attribute(:basisOfRecord, 'FossilSpecimen')
    end
  end

  def revert_dwc_occurrence
    if biocuration_class.uri == DWC_FOSSIL_URI
      biological_collection_object.dwc_occurrence&.update_attribute(:basisOfRecord, 'PreservedSpecimen')
    end
  end

end

#project_idInteger

the project ID

Returns:

  • (Integer)


20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'app/models/biocuration_classification.rb', line 20

class BiocurationClassification < ApplicationRecord
  include Housekeeping
  include Shared::IsData

  acts_as_list scope: [:biological_collection_object_id, :project_id]

  belongs_to :biocuration_class, inverse_of: :biocuration_classifications
  belongs_to :biological_collection_object, class_name: '::CollectionObject::BiologicalCollectionObject', inverse_of: :biocuration_classifications

  validates_presence_of :biocuration_class, :biological_collection_object
  validates_uniqueness_of :biocuration_class, scope: [:biological_collection_object]

  # Janky, but here for now
  after_save :update_dwc_occurrence
  after_destroy :revert_dwc_occurrence

  protected

  def update_dwc_occurrence
    if biocuration_class.uri == DWC_FOSSIL_URI
      biological_collection_object.dwc_occurrence&.update_attribute(:basisOfRecord, 'FossilSpecimen')
    end
  end

  def revert_dwc_occurrence
    if biocuration_class.uri == DWC_FOSSIL_URI
      biological_collection_object.dwc_occurrence&.update_attribute(:basisOfRecord, 'PreservedSpecimen')
    end
  end

end

Instance Method Details

#revert_dwc_occurrenceObject (protected)



44
45
46
47
48
# File 'app/models/biocuration_classification.rb', line 44

def revert_dwc_occurrence
  if biocuration_class.uri == DWC_FOSSIL_URI
    biological_collection_object.dwc_occurrence&.update_attribute(:basisOfRecord, 'PreservedSpecimen')
  end
end

#update_dwc_occurrenceObject (protected)



38
39
40
41
42
# File 'app/models/biocuration_classification.rb', line 38

def update_dwc_occurrence
  if biocuration_class.uri == DWC_FOSSIL_URI
    biological_collection_object.dwc_occurrence&.update_attribute(:basisOfRecord, 'FossilSpecimen')
  end
end