module Abstractor::Methods::Models::AbstractorAbstraction::ClassMethods

Public Instance Methods

update_abstractor_abstraction_other_value(abstractor_abstractions, abstraction_other_value_type) click to toggle source

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

@param [Abstractor::Enum::ABSTRACTION_OTHER_VALUE_TYPE_UNKNOWN, Abstractor::Enum::ABSTRACTION_OTHER_VALUE_TYPE_NOT_APPLICABLE] abstraction_other_value_type contorls whether to update all abstractor abstractions in the group to ‘unknown’ or ‘not applicable’ @return [void]

# File lib/abstractor/methods/models/abstractor_abstraction.rb, line 140
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

Private Instance Methods

set_abstractor_abstraction(abstractor_abstraction, unknown, not_applicable) click to toggle source
# File lib/abstractor/methods/models/abstractor_abstraction.rb, line 179
def set_abstractor_abstraction(abstractor_abstraction, unknown, not_applicable)
  abstractor_abstraction.value = nil
  abstractor_abstraction.unknown = unknown
  abstractor_abstraction.not_applicable = not_applicable
  abstractor_abstraction.save!
end