0
我有一个模型,Clients
和一个对应的数据库,其中有lastname
和firstname
列。最初对[lastname, firstname]
的唯一性没有限制,并且数据库当前包含重复项。我想清理数据库并对模型施加约束,例如:validates_uniqueness_of :lastname, scope: :firstname
。对填充数据库施加约束(违反这些约束的记录)
我想到的想法是以某种方式备份数据,对空模型数据库施加约束,然后将数据重新提交到重复项目中,现在我可以单独处理异常恢复。
但是,我觉得我在这里做了些什么。
有没有更好的“导轨方式”来做到这一点?
但我仍然想知道如何清理无效记录。我猜,client.destroy'不会工作,因为客户端无效。通过添加一个额外的字段'dupe'并将唯一性验证更改为:'validates_uniqueness_of:lastname,scope:[:firstname,:dupe]'解决了这个问题。 'client.dupe = true; client.destroy'然后工作(自然)。 –
如果您想批量迭代,请使用Client.find_each –