Saying `balance` is the same as `!balance.nil?`. In the former, if the balance has any value then it will return true.

In this method, the ternary operator is not necessary. If both values are true, it will return true. If any are false, it will return false.

I opted to use `>=` instead of `<=` as I think it's more natural. This is simply a matter of preference and doesn't really matter much.

Also, self is not necessary here (it is implicit). Quoted from the [Ruby style guide](https://github.com/bbatsov/ruby-style-guide): 

> * Avoid `self` where not required. (It is only required when calling a self write accessor.)

  ```Ruby
  # bad
  def ready?
    if self.last_reviewed_at > self.last_updated_at
      self.worker.update(self.content, self.options)
      self.status = :in_progress
    end
    self.status == :verified
  end

  # good
  def ready?
    if last_reviewed_at > last_updated_at
      worker.update(content, options)
      self.status = :in_progress
    end
    status == :verified
  end
  ```

In several places throughout the code, self is used where it is not necessary. I would suggest removing them eventually.

Lastly, I would consider renaming this method. In particular, it should end in a question mark since it returns a boolean value. This goes a little bit further towards better revealing its intent. I would suggest a name like `sufficient_balance?`