Module: Abstractor::Methods::Models::AbstractorAbstraction::ClassMethods

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

Instance Method Summary collapse

Instance Method Details

#update_abstractor_abstraction_other_value(abstractor_abstractions, abstraction_other_value_type) ⇒ void

This method returns an undefined value.

Updates all abstractor abstractions passed in to ‘not applicable’ or ‘unknown’.

Parameters:

Raises:

  • (ArgumentError)


101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/abstractor/methods/models/abstractor_abstraction.rb', line 101

def update_abstractor_abstraction_other_value(abstractor_abstractions, abstraction_other_value_type)
  raise(ArgumentError, "abstraction_value_type argument invalid") unless Abstractor::Enum::ABSTRACTION_OTHER_VALUE_TYPES.include?(abstraction_other_value_type)

  rejected_status = Abstractor::AbstractorSuggestionStatus.where(:name => 'Rejected').first
  accepted_status = Abstractor::AbstractorSuggestionStatus.where(:name => 'Accepted').first
  case abstraction_other_value_type
  when Abstractor::Enum::ABSTRACTION_OTHER_VALUE_TYPE_UNKNOWN
    unknown = true
    not_applicable = false
  when Abstractor::Enum::ABSTRACTION_OTHER_VALUE_TYPE_NOT_APPLICABLE
    unknown = false
    not_applicable = true
  end

  Abstractor::AbstractorAbstraction.transaction do
    if abstraction_other_value_type
      abstractor_abstractions.each do |abstractor_abstraction|
        abstractor_abstraction.abstractor_suggestions.each do |abstractor_suggestion|
          if unknown && abstractor_suggestion.unknown
            abstractor_suggestion.abstractor_suggestion_status = accepted_status
            abstractor_suggestion.save!
          else
            set_abstractor_abstraction(abstractor_abstraction, unknown, not_applicable)
            abstractor_suggestion.abstractor_suggestion_status = rejected_status
            abstractor_suggestion.save!
          end
        end

        if abstractor_abstraction.abstractor_suggestions.empty?
          abstractor_abstraction.unknown = unknown
          abstractor_abstraction.not_applicable = not_applicable
          abstractor_abstraction.save!
        end
      end
    end
  end
end