我刚刚将我的应用程序升级到 Rails 4.1.0.beta1
我有课
class User < ActiveRecord::Base
enum usertype: { :employee => 10, :boss => 30, :manager => 40, :admin => 50 }
}
所有枚举功能都像 user.boss 一样运行良好? # 是的
但是当我尝试获取所有用户类型时
User.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
最佳答案
您是否创建了正确的迁移?
枚举属性是数据库中映射到整数的值,但可以通过名称查询。
所以您需要一个迁移,将一个名为“usertype”的整数列添加到 Users 表中。你做到了吗?
编辑 1:
好的,刚刚测试了一下,获取映射的类方法不适用于 Rails 4.1.0.beta1,但适用于 edge Rails。所以希望它能进入下一个测试版……
编辑 2:
另外,查看 this commit它演示了在 Rails 4.1.0.beta1 中使用常量而不是类方法访问枚举映射的方式。因此,在您的情况下,您将使用 User::USERTYPE
来访问您的映射。
关于ruby-on-rails - rails 4.1 无法获取所有枚举类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21587887/