我刚刚开始使用Rails并决定制作一个小应用程序来学习实用的东西。
我有一个用户类,它有一个用户组整数字段。我想使用常量添加到迁移a:默认值。
在我的用户模型中,我使用常量定义了不同的组,以便稍后我可以轻松检查“admin?”等。
t.integer :user_group, :default => USER
我在db:migrate
上收到以下错误耙子流产了! 期望[...] / app / models / user.rb定义USER
但是在用户模型中,我有这个:
ADMIN = 1
USER = 2
任何想法我做错了什么?
答案 0 :(得分:4)
引用常量时需要包含类名。如果您的班级名为User
,请尝试以下操作:
t.integer :user_group, :default => User::USER
或
t.integer :user_group, :default => User::ADMIN
答案 1 :(得分:1)
您不应在迁移中使用常量,因为迁移应代表一个独立的时间点。迁移不应该耦合到可能随时间变化的代码库,因为迁移随后会根据您运行它的时间而改变。如果您或其他人在代码库中更改常量的值(稍后),则会影响迁移。您实际上需要更改代码中的常量值可能不太现实,但这仅仅是原则上的一个参数。
如果您想稍后更改数据库中的默认值,那么只需使用新值进行新的迁移。
答案 2 :(得分:0)
我想你也可以写:
t.integer :User, :user_group, :default => ADMIN
我错了吗?