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)


123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# File 'lib/abstractor/methods/models/abstractor_abstraction.rb', line 123

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