Почему бы не сделать просто поле status, куда записывать 0, 1, 2 и т.д. Да не так гибко, но база не будет нагружаться лишним запросом. Лично я всегда делаю так:
# Enumerable status
  STATUS = {
      0 => :waiting,
      1 => :finished,
      2 => :expired,
      3 => :removed
  }
  STATUS.each do |key, status|
    define_method "#{status}!" do
      self.status = key
      self.save
    end
    define_method "#{status}?" do
      self.status == key
    end
  end
  def status?
    STATUS[self.status]
  end
После этого можно использовать данные методы:
object.finished! # status = 1
object.waiting? # false
object.waiting! # status = 0
object.waiting? # true
object.status? # waiting