Determining whether a task is active based on many conditions
Some comments on your code:


Keep the line length below 80-100 or the code becomes unreadable.
self[:active] == false -> !self[:active]
Checks should be terser, encapsulate logic in methods.
A return at the end of a code block is neither necessary nor idiomatic.
[Subjective] I usually prefer full-fledge conditionals to guards, indentation helps a lot to see what's going on.


In a first refactor, I'd write a more readable case:

def active?
  case 
  when (!self[:active] &amp;&amp; !ignore_column) || suspended || completed_at
    false
  when failed_attempts &gt;= MAX_FAILED_ATTEMPTS
    if suppress_error_emails
      false
    end
      message = "Too many failed attempts for task execution. " + 
        "#{failed_attempts}/#{MAX_FAILED_ATTEMPTS} failed attempts for Task #{id}."
      SystemMailer.error(message: message)
    end
  # ...
  # more conditions here, you get the idea
  # ...
  when template &amp;&amp; 
       (status_opted_out? || con_mktg_opted_out? || user_mktg_opted_out?)
    false
  else
    true
  end
end


On a second refactor, I'd probably move all logic to separate methods. Now you could write:

def active?
  condition1? &amp;&amp; condition2? &amp;&amp; ... &amp;&amp; conditionN?
end