#対象者
- 他のモデルのカラムまで検索をする方法を考えている方
#目的
- 他モデルのカラムを検索してViewに表示する
#実際の手順と実例
###1.前提
下記を元に実装しています
- ここでは記事のタグ名を検索します。
- Article、Tag、ArticleTagの3つのモデルを使用
- ArticleTagを中間テーブルとして実装しています。
- tag_nameカラムをTagテーブルで確認します。
###2.joinsメソッドを使用
joinsメソッドとはテーブル同士を内部結合して検索するためのメソッドです。
これを元に検索メソッドを使用すると
article.rb
def self.search(search_word)
Article.joins(:tags)#①
.where(["title LIKE(?) OR body LIKE(?) OR sub_title LIKE(?) OR tag_name LIKE(?)",
"%#{search_word}%", "%#{search_word}%", "%#{search_word}%", "%#{search_word}%"]).distinct#②
end
①でjoinsを使ってtagsテーブルを結合し、tag_nameを検索できるようにしました。
②distinctは記事の重複を割ける(重複するものがあれば一つにしてくれる)メソッドです。
これで実装完了です!
#参照
####投稿者コメント
初めてjoinsというものを使ったのでメモしておきます。
これで検索の幅が広がると思います!
####My Profile
プログラミング学習歴3ヶ月目のアカウントです!
プログラミングスクールで学んだ内容や自分が躓いた箇所等のアウトプットの為に発信しています。
また、プログラミング初学者の方にわかりやすく、簡潔にまとめて情報共有できればと考えています。
もし、投稿した記事の中に誤り等ございましたら、コメント欄でご教授いただけると幸いです。