rails 4.1无法获取所有枚举类型

时间:2014-02-05 20:32:56

标签: ruby-on-rails

我只是将我的应用程序升级到rails 4.1.0.beta1

我有一个班级

class User < ActiveRecord::Base
    enum usertype: { :employee => 10, :boss => 30, :manager => 40, :admin => 50 }
}

所有枚举功能都像user.boss一样有效吗? #ture

但是当我尝试通过

获取所有用户类型时
User.usertypes

我为“usertypes”获得了一个未定义的方法

有帮助吗?

这是我从http://edgeapi.rubyonrails.org/classes/ActiveRecord/Enum.html

学到的链接

编辑: 迁移

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :email
      t.string :password_digest
      t.string :remember_token
      t.boolean :is_locked
      t.integer :usertype, default: 10
      t.timestamp :last_login_at

      t.timestamps
    end
  end
end

1 个答案:

答案 0 :(得分:3)

您是否创建了正确的迁移?

枚举属性是值,它们映射到数据库中的整数,但可以按名称查询。

因此,您需要一个迁移,它将名为“usertype”的整数列添加到Users表中。你做到了吗?

编辑1

好的,只是测试了它,获取映射的类方法不适用于Rails 4.1.0.beta1,但是可以使用边缘Rails。所以希望将其纳入下一个测试版......

编辑2

另外,请查看this commit,它演示了使用常量而不是类方法访问Rails 4.1.0.beta1中的枚举映射的方式。因此,在您的情况下,您可以使用User::USERTYPE来访问您的映射。