Module: Abstractor::Methods::Models::AbstractorAbstraction::InstanceMethods

Included in:
AbstractorAbstraction
Defined in:
lib/abstractor/methods/models/abstractor_abstraction.rb

Instance Method Summary collapse

Instance Method Details

#detect_abstractor_indirect_source(abstractor_abstraction_source) ⇒ Abstractor::AbstractorIndirectSource?

Detects if the abstraction already has an Abstractor::AbstractorIndirectSource based on the Abstractor::AbstractorAbstractionSource passed via the abstractor_abstraction_source parameter. Retuns it if present. Otherwise nil.

Parameters:

  • abstractor_abstraction_source (Abstractor::AbstractorAbstractionSource)

    An instance of Abstractor::AbstractorAbstractionSource to check for the presence of an Abstractor::AbstractorIndirectSource.

Returns:



87
88
89
90
91
92
# File 'lib/abstractor/methods/models/abstractor_abstraction.rb', line 87

def detect_abstractor_indirect_source(abstractor_abstraction_source)
  abstractor_indirect_source = nil
  abstractor_indirect_source = abstractor_indirect_sources(true).detect do |ais|
    ais.abstractor_abstraction_source == abstractor_abstraction_source
  end
end

#detect_abstractor_suggestion(suggested_value, unknown, not_applicable) ⇒ Object



64
65
66
67
68
69
70
71
# File 'lib/abstractor/methods/models/abstractor_abstraction.rb', line 64

def detect_abstractor_suggestion(suggested_value, unknown, not_applicable)
  abstractor_suggestion = nil
  abstractor_suggestion = abstractor_suggestions(true).detect do |abstractor_suggestion|
    abstractor_suggestion.suggested_value == suggested_value &&
    abstractor_suggestion.unknown == unknown &&
    abstractor_suggestion.not_applicable == not_applicable
  end
end

#display_valueObject



52
53
54
55
56
57
58
59
60
61
62
# File 'lib/abstractor/methods/models/abstractor_abstraction.rb', line 52

def display_value
  if unknown
    'unknown'
  elsif not_applicable
    'not applicable'
  elsif value.blank?
    '[Not set]'
  else
    value
  end
end

#matching_abstractor_suggestionsObject



45
46
47
48
49
50
# File 'lib/abstractor/methods/models/abstractor_abstraction.rb', line 45

def matching_abstractor_suggestions
  unknown_values        = unknown ? unknown : [unknown, nil]
  not_applicable_values = not_applicable ? not_applicable : [not_applicable, nil]
  suggested_values = value.blank? ? ['', nil] : value
  abstractor_suggestions.where(unknown: unknown_values, not_applicable: not_applicable_values, suggested_value: suggested_values)
end

#remove_unreviewed_suggestions_not_matching_suggestions(suggestions) ⇒ void

This method returns an undefined value.

Remove suggestions on the abstraction with a suggestion status of ‘needs review’ that are not present in the array of hashes representing suggestions passed in.

Parameters:

  • suggestions (Array<Hash>)


107
108
109
110
111
112
113
114
# File 'lib/abstractor/methods/models/abstractor_abstraction.rb', line 107

def remove_unreviewed_suggestions_not_matching_suggestions(suggestions)
  unreviewed_abstractor_suggestions.each do |abstractor_suggestion|
    not_detritus = suggestions.detect { |suggestion| suggestion[:suggestion] == abstractor_suggestion.suggested_value }
    unless not_detritus
      abstractor_suggestion.destroy
    end
  end
end

#review_matching_suggestionsObject



37
38
39
40
41
42
43
# File 'lib/abstractor/methods/models/abstractor_abstraction.rb', line 37

def review_matching_suggestions
  accepted_status = Abstractor::AbstractorSuggestionStatus.where(:name => 'Accepted').first
  matching_abstractor_suggestions.each do |abstractor_suggestion|
    abstractor_suggestion.abstractor_suggestion_status = accepted_status
    abstractor_suggestion.save!
  end
end

#unreviewed?Boolean

Determines if the abstraction has been reviewed.

Returns:

  • (Boolean)


77
78
79
# File 'lib/abstractor/methods/models/abstractor_abstraction.rb', line 77

def unreviewed?
  (value.blank? && unknown.blank? && not_applicable.blank?)
end

#unreviewed_abstractor_suggestionsActiveRecord::Relation

Returns all the suggestions for the abstraction with a suggestion status of ‘needs review’

Returns:

  • (ActiveRecord::Relation)

    List of [Abstractor::AbstractorSuggestion].



98
99
100
# File 'lib/abstractor/methods/models/abstractor_abstraction.rb', line 98

def unreviewed_abstractor_suggestions
  abstractor_suggestions.select { |abstractor_suggestion| abstractor_suggestion.abstractor_suggestion_status.name == Abstractor::Enum::ABSTRACTOR_SUGGESTION_STATUS_NEEDS_REVIEW }
end