【问题标题】:Adding validations to existing model in Rails在 Rails 中为现有模型添加验证
【发布时间】:2012-09-17 15:52:03
【问题描述】:

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

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

我知道默认情况下,任何现有记录都会简单地添加 :field 并且结果将为 null,除非我指定 :default。

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

【问题讨论】:

  • 为什么不迁移你的数据库来填充那些空值呢?
  • 有效,此时我们只有数千条记录。

标签: ruby-on-rails ruby


【解决方案1】:

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

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

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

【讨论】:

  • 有道理。无论如何,我们可能需要清理数据库。
猜你喜欢
  • 2019-07-03
  • 1970-01-01
  • 2016-03-30
  • 1970-01-01
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-19
相关资源
最近更新 更多