这个 gem 存在吗?

Does this gem exist?

我目前需要在数据库中存储一个id,表示特定常量数组中的索引。我一直在使用这样的方法,由一个问题产生。

class Foo
  ARY = [ :a :b, :c ]

  def bar
    return ARY[self.bar_id]
  end

  def bar=(value)
    return self.bar_id=ARY.index(value)
  end

  scope :a, -> { where(:bar_id => ARY.index(:a)) }
  scope :b, -> { where(:bar_id => ARY.index(:b)) }
  scope :c, -> { where(:bar_id => ARY.index(:c)) }

  def a?
    return bar == :a
  end
  def b?
    return bar == :b
  end
  def c?
    return bar == :c
  end

end

gem 这样做吗?

随着 simple_enum gem 你的 class 变成

class Foo < ActiveRecord::Base
  as_enum :bar, [:a, :b, :c], source: :bar_id
end

ActiveRecord 内置了对此的支持。 http://api.rubyonrails.org/classes/ActiveRecord/Enum.html