我是 Rails 新手,我需要確定一種方法來更新 User 表中所有記錄的電子郵件域。
例如,用戶表有電子郵件列,其中用戶表中的所有記錄都有@xyz.com 域。我想將此域更改為新域.ie @abc.com
我已經看到不同的答案正在使用
User.update_all(some_column: "bar")
但這對我不起作用。任何人都可以請指導我。謝謝
uj5u.com熱心網友回復:
一個非常簡單但不是很快的解決方案:
User.find_each { |usr| usr.update(email: usr.email.sub('@xyz.com', '@abc.com')) }
當表中有很多用戶沒有“@xyz.com”電子郵件地址時,您可能只想首先加載匹配的用戶:
User
.where("email LIKE '%@xyz.com'")
.find_each { |usr| usr.update(email: usr.email.sub('@xyz.com', '@abc.com')) }
最快的解決方案當然是在純 SQL 中更新記錄,但語法可能取決于您使用的資料庫引擎。而且當您的表不是太大(數十萬條記錄)時,不使用 Rails 可能不值得。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/460562.html
