LoginSignup
0
0

More than 1 year has passed since last update.

配列のプロパティから特定の文字列を含むデータを取得する方法

Last updated at Posted at 2022-01-29

はじめに

この記事は、エンジニア経験1年の大学生が実務で勉強になったこと、詰まったことをまとめています。間違っている箇所などがございましたら、指摘していただけると幸いです。
※モデル名やプロパティ名など詳細につきましては、架空のものに変更しております。

前提

  • Ruby: 2.7.5
  • Rails: 5.2.4.6
  • Neo4j: 9.2.4

経緯

実務では社内で使用するツールの開発に携わっており、「データを更新することができない」と報告があった。原因を調査していくと、特定の文字列を含むURLを入力することで、データの更新ができないことがわかった。
そこで、ビジネスの方と話し合い、バリデーションを追加することになった。既存のデータにも特定の文字列を含むURLが存在するため、rakeタスクで該当の文字列を含むURLを削除することになった。
ただ、その該当の文字列を含むURLを取り出すことに詰まった。

失敗した方法

[1] pry(main)> Company.as(:c).where("c.links =~ '.*/hogehoge/.*'")`

railsコンソールを立ち上げ、該当のデータを取得できるか確認した。だが、このクエリでは取得することができなかった。
理由は、linksプロパティが配列だったので、取得することができなかった。

解決した方法

[1] pry(main)> Company.as(:c).where("any(x in c.links where x =~ '.*/hogehoge/.*')")

上記のコマンドで取得することができた。

まとめ

配列のプロパティで特定の文字列を含むものを取得する方法はなかなか調べても出てこなかったので、とても苦労しました。今回のような問題に詰まった方に少しでも参考になればと思い、この記事を書きました。間違っていたり、もっと良い方法などがございましたら、コメントなどいただけると幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0