仕事でString型のカラムに格納されている文字列のうち、一部だけ削除するよう依頼がありました。
やり方を備忘録としてまとめます。
バージョン
- Ruby 3.1.4
- Rails 6.1.7.7
記事の信頼性
- ぼくは独学で未経験から従業員300名以上の自社開発企業へ転職しました。
- 実務ではVue.jsとRailsを毎日書いています。
- 初心者や駆け出しエンジニアがつまづくポイントも身をもってよく理解しています。
目次
問題
「あるユーザーのプロフィール画面に表示されているURLを削除してほしい」という依頼がありました。
調べたところ、Userテーブルのintroduction
(自己紹介)カラムのデータがプロフィール画面に表示されていました。
introduction
カラムには自己紹介の内容が格納されており、その中からURLの文字列だけを削除しないといけません。
解決方法
結論として、gsub
メソッドを使い、Railsコンソール上で以下の手順を踏むことで、URLの文字列だけを削除することができました。
# 対象ユーザーを取得(user_idは仮)
user = User.find_by(user_id: 1234567)
# 対象ユーザーの自己紹介文を確認
user.introduction
# 削除したいURLを空文字に置換する
user.introduction = user.introduction.gsub("https://example.com//", "")
# 変更をDBに保存する
user.save
gsub
メソッドは、第1引数で指定した文字列 or 正規表現にマッチする部分を、第2引数で指定した文字列に置換するメソッドです。
gsub
メソッドを使うことで、特定のカラムに含まれる文字列のうち、一部だけを削除することができました。
おわりに
「文字列の一部だけを削除 = 文字列の一部を空文字に置換」と気づければ、すぐできましたね。
コメント