如何将rails模型整数状态转换为字符串名称?

时间:2013-04-27 19:14:48

标签: ruby-on-rails ruby ruby-on-rails-3

我在其中一个模特身上有一个状态,并且想要做对。这是当前的代码版本:

  self::TEST_NONE = 0
  self::TEST_PENDING = 1
  self::TEST_DONE = 2

  def self.test_status_name name
    case name
      when self::TEST_NONE
        'None'
      when self::TEST_PENDING
        'Pending'
      when self::TEST_DONE
        'Done'
      else
        'None'
    end
  end

在视图中

<%= Device::test_status_name @device.test_status %>

一般情况下有效,但感觉不对。我想为test_status实现类似默认的to_s方法。额外的类可以工作(不确定如何正确实现它),但我不需要并且需要AR支持的模型,只有几个常量状态。

1 个答案:

答案 0 :(得分:2)

为什么不喜欢

class Device
  TEST_STATUSES = %w{ None Pending Done }

  def test_status_name
    test_status ? TEST_STATUSES[test_status] : 'None'
  end
end

<%= @device.test_status_name %>