3

我想向 Rails 中的模型添加 :presence 和 :uniqueness 验证。我正在使用 MongoDB 和 Mongoid gem。

我有一个已经在使用的模型,并且在数据库中有现有记录。我想添加一个新的 :field ,然后为该字段添加 :presence 和 :uniqueness 的验证。

我知道默认情况下,任何现有记录都将简单地添加:字段,结果将为空,除非我指定:默认值。

我的问题是,由于我希望这个新的 :field 是唯一的,这是否会导致数据库中现有记录为空的错误?我会丢失这些记录还是 Rails 只是将验证应用于新记录?

4

1 回答 1

2

Rails/ AciveRecord不会忽略或删除您的旧记录...

验证的工作方式如下:它们仅在您尝试将内容写入数据库时​​使用/检查,例如,当您创建新记录或更新记录时。因此,在您的情况下,当您尝试更新旧记录而不添加新的必填字段时,您将收到验证错误。

我建议您在添加新字段时尝试清理数据库(意味着为新的必填字段的旧记录添加合理的默认值)。

于 2012-09-17T16:14:54.123 回答