0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Ruby on Rails】他テーブルのカラムも検索して表示する方法

Posted at

#対象者

  • 他のモデルのカラムまで検索をする方法を考えている方

#目的

  • 他モデルのカラムを検索して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は記事の重複を割ける(重複するものがあれば一つにしてくれる)メソッドです。

これで実装完了です!

#参照

【Rails入門】joinsの使い方まとめ
【SQL入門】DISTINCTで重複行をまとめる方法をわかりやすく解説

####投稿者コメント
初めてjoinsというものを使ったのでメモしておきます。
これで検索の幅が広がると思います!

####My Profile
プログラミング学習歴3ヶ月目のアカウントです!
プログラミングスクールで学んだ内容や自分が躓いた箇所等のアウトプットの為に発信しています。
また、プログラミング初学者の方にわかりやすく、簡潔にまとめて情報共有できればと考えています。
もし、投稿した記事の中に誤り等ございましたら、コメント欄でご教授いただけると幸いです。 

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?