我在其中一个模特身上有一个状态,并且想要做对。这是当前的代码版本:
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支持的模型,只有几个常量状态。
答案 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 %>