2014-11-07 2 views
0

Я хочу использовать перечисления с MongoMapper и рельсами 4. Я знаю, что там есть жемчужины (enumerize), которые добавляют это поведение, но, похоже, много добавить для небольшой функции.Перечисления в рельсах без ActiveRecord

Что является самым простым способом создания перечисления для класса ActiveModel?

ответ

0

Использование добытчиками, сеттеры и массив констант это может быть быстро достигнуто:

class Subscription 
    include MongoMapper::Document 
    ... 

    key :status, Integer 

    STATE = [:queued, :submitted, :processing, :payment_received, :fully_paid, :error] 

    def status=(str) 
    @status = STATE.index(str) 
    end 

    def status 
    STATE[@status] 
    end 
end 

Можно даже добавить проверку на общих запросов, например, состояние ошибки может потребоваться проверить чаще, чем другие, и вы может пропускать символ> целочисленное преобразование:

def errors? 
    @status == 5 
end 
Смежные вопросы