我想在Rails中为模型添加:presence和:uniqueness validation。我正在使用MongoDB和Mongoid gem。
我有一个已经在使用的模型,并且在DB中有现有记录。我想添加一个新的:字段,然后为该字段添加验证:presence和:uniqueness。
我知道默认情况下,任何现有记录都只会添加:field,结果将为null,除非我指定:default。
我的问题是,因为我希望这个新的:字段是唯一的,这会导致数据库中现有记录的错误是否为空?我是否会丢失这些记录,或者Rails是否只将验证应用于新记录?
答案 0 :(得分:2)
Rails / AciveRecord 不会忽略或删除您的旧记录......
验证的工作方式如下:当您尝试将内容写入数据库时,它们仅用于/检查,例如:当您创建新记录或更新记录时。因此,在您尝试更新旧记录时,如果不添加新的必填字段,则会出现验证错误。
我建议您在添加新字段时尝试清理数据库(意味着为新的必填字段添加旧记录的合理默认值)。