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 –