dtsato/agile_brazil

View on GitHub
app/models/validators/session_acceptance_validator.rb

Summary

Maintainability
A
55 mins
Test Coverage
# frozen_string_literal: true

class SessionAcceptanceValidator < ActiveModel::EachValidator
  def validate_each(record, attribute, _value)
    case record.outcome
    when Outcome.find_by(title: 'outcomes.accept.title')
      record.errors.add(attribute, :cant_accept) unless
        record.session.try(:pending_confirmation?) ||
        record.session.try(:can_tentatively_accept?)
    when Outcome.find_by(title: 'outcomes.reject.title')
      record.errors.add(attribute, :cant_reject) unless
        record.session.try(:rejected?) ||
        record.session.try(:can_reject?)
    end
  end
end