[英]A constant for a default value in Rails migration
我刚刚开始使用Rails并决定制作一个小应用程序来学习实用的东西。
我有一个用户类,它有一个用户组整数字段。 我想使用常量添加到迁移a:默认值。
在我的用户模型中,我使用常量定义了不同的组,以便稍后我可以轻松地检查“admin?” 等等
t.integer :user_group, :default => USER
我在db:migrate上收到以下错误
耙子流产了! 期望[...] / app / models / user.rb定义USER
但是在用户模型中我有这个:
ADMIN = 1
USER = 2
我有什么想法我做错了吗?
在引用常量时,您需要包含类名。 如果您的类名为User
,请尝试以下操作:
t.integer :user_group, :default => User::USER
要么
t.integer :user_group, :default => User::ADMIN
您不应在迁移中使用常量,因为迁移应表示独立的时间点。 迁移不应该耦合到可能随时间变化的代码库,因为迁移随后会根据您运行它的时间而改变。 如果您或其他人在代码库中更改常量的值(稍后),则会影响迁移。 您实际上需要更改代码中的常量值可能不太现实,但这仅仅是原理上的参数。
如果要在稍后的某个时间点更改数据库中的默认值,则只需使用新值进行新的迁移。
我想你也可以写:
t.integer :User, :user_group, :default => ADMIN
我错了吗 ?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.