用户状态字段,如何映射到枚举

时间:2011-05-25 13:15:42

标签: ruby-on-rails

我有一个User模型,我想拥有一个user_status属性。

我希望将此属性存储为数据库中的整数。

我正在考虑创建一个枚举,然后将该枚举映射到整数值,以便我可以执行以下操作:

if user.status == MyEnum::RequiresApproval
..
..

在模型级别使用active_record,我可以使用枚举吗?

在这种情况下通常会做什么?

1 个答案:

答案 0 :(得分:2)

枚举不是很像Rails。国家机器是。

查看'transitions'gem(link)(几乎是Rails Core的一部分)

然后你可以做以下事情......

 #GemFile
 gem "transitions", :require => ["transitions", "active_record/transitions"]


 #And in your Model, do something like the following:
  include ActiveRecord::Transitions

  field :state, type: String
  scope :active, where(state: 'active')

  state_machine do
    state :active
    state :inactive

    event :inactivate do
      transitions :from => :active, :to => :inactive
    end

    event :activate do
      transitions :from => :inactive, :to => :active
    end
  end

这对我来说也是一种过渡,不使用枚举和输入表格 - 但我没有错过它们