いつもお世話になっております。
以下のようなUserとArticleモデルがあり、Userモデルを特定のワードで全列部分一致検索を行う際に、関連するArticleテーブルのcontentも合わせて検索したいと考えております。
例えば「xxxx」というワードUserテーブルid「3」のname、info、other_info行にない場合でも、Articleテーブル内のuser_idが3のcontentに一つでも「xxxx」というワードがあればUserテーブルid「3」は検索結果として抽出したいというようなイメージです。
Userテーブル
name: string
info: text
other_info: text
Articleテーブル
user_id: integer
title: string
content: text
joinメソッドなので、子テーブルの特定のカラムのみを検索する方法はあったのですが、部分一致検索との複合のような記事は見つからずこちらに質問させていただきました。
参考になるサイトでも構いませんので、適切な方法をご教示いただけますと幸いです。
よろしくお願いいたします。
環境
Amazon Linux release 2 (Karoo)
Rails 5.2.3
Ruby version: 2.7.1
ruby
1 2# モデル 3class User < ApplicationRecord 4 has_many :article 5end 6 7class Article < ApplicationRecord 8 belongs_to :user 9end 10 11 12# コントローラ 13# 現状、以下のような形で親テーブルの全列の部分一致検索はできている 14# これに子テーブルArticleの「content」や「title」列も含めたい 15search = "xxxx" 16User.where('name LIKE ? OR info LIKE ? OR other_info LIKE ?', "%#{search}%", "%#{search}%", "%#{search}%") 17
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。