2013-04-27 1 views
0

У меня есть статус на одной из моделей, и вы хотите сделать все правильно. Вот текущая версия код:Как отличить целочисленное состояние модели рельсов к имени строки?

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 %> 

который работает в целом, но чувствует себя неправильно. Я хочу реализовать что-то вроде метода to_s по умолчанию для test_status. Дополнительный класс мог бы работать (не уверен, как правильно его реализовать), но мне не нужна и нужна AR-поддерживаемая модель, всего несколько постоянных статусов.

ответ

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 %> 
+0

Выглядит здорово, спасибо за предложение! – lifecoder