Как правильно использовать атрибуты типа enum в Rails 3?

Простым примером может быть сообщение с тремя состояниями: ПРОЕКТ, ИЗДАНО и УДАЛЕНО.

То, как я делаю это прямо сейчас, выглядит примерно так:

class Post < ActiveRecord::Base
  DRAFT = 0
  PUBLISHED = 1
  DELETED = 2
end

Проблема, которая возникает, заключается в том, что, когда я запускаю свои тесты, используя spork, я должен перезагрузить модель вручную, с чем-то вроде

Spork.each_run do
  Dir["#{Rails.root}/app/models/**/*.rb"].each { |model| load model }
end

Что в результате дает мне множество предупреждений, таких как

warning: already initialized constant DRAFT
warning: already initialized constant PUBLISHED
warning: already initialized constant DELETED

Все работает просто отлично, но я не думаю, что это лучший способ сделать это. Есть лучший способ сделать это? Я знаю, что есть драгоценные камни, такие как acts_as_state_machine , но я хотел бы знать решение, не являющееся драгоценным камнем, если есть простое.

0 ответов

Другие вопросы по тегам