質問: 失礼します。 squeelジェムでは下のように、複数のフィールド上のデータをconcatしたうえで、その文字列に対してLIKEをかけるような処理ができたのですが、 ``` scope :name_like, -> (name) { where { concat(first_name, last_name).like my {"%#{name}%"} } } ``` Rails5に上がったことで、Squeelが使えなくなったため、ActiveRecordで書き直す必要が出てきました。 ですが通常のActiveRecordで、どのように書き直したらいいかがわかりません。 どなたかわかる方、教えてください。お願いいたします。
回答: 残念ながら、「DB関数をかけたものに対する`WHERE`」や「`LIKE`演算子の利用」には、Rails的な書き方は対応していません。`.where("CONCAT(first_name, last_name) LIKE '%?%'", name)`のように書くしかありません(`JOIN`したりすると動かなくなることもあります)。 Squeelからのマイグレーションでしたら、`baby_squeel`というGem(GitHub)がありますので、こちらを使うのも1つの方法です(`.where.has {}`と別メソッド化して、ActiveRecordコアのモンキーパッチを減らすことで、Rails 5にも対応できるようになっています)。