繁体   English   中英

Rails迁移中的默认值的常量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM