Rails迁移中的默认值的常量

时间:2010-12-24 12:48:18

标签: ruby-on-rails

我刚刚开始使用Rails并决定制作一个小应用程序来学习实用的东西。

我有一个用户类,它有一个用户组整数字段。我想使用常量添加到迁移a:默认值。

在我的用户模型中,我使用常量定义了不同的组,以便稍后我可以轻松检查“admin?”等。

t.integer :user_group, :default => USER

我在db:migrate

上收到以下错误
  耙子流产了!   期望[...] / app / models / user.rb定义USER

但是在用户模型中,我有这个:

ADMIN = 1
USER = 2

任何想法我做错了什么?

3 个答案:

答案 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

我错了吗?