【Rails】where like検索の使い方メモ
今回やりたかったことはjoin先のテーブルからLIKE検索したかった。今回使うモデルは2つで以下の形。
class Category < ApplicationRecord has_many :movies end class Movie < ApplicationRecord belongs_to :category end
こんな感じでできた
Movie.joins(:category).where("categories.name like ?", "%キーワード%").each do |movie| puts movie.category.inspect end
joinsの部分はやりたいことによるけど、left_joins、eager_loadでもできる。この辺りのどれを使うのが最適かはもう少し勉強中。で、何にはまったかというと。以下みたいに条件渡すところを「{ テーブル名: {カラム名: '値'} }」とハッシュ形式としてできないものかとずっといろいろ探してしまった。
Movie.joins(:category).where({categories: {name: 'キーワード'} })
結果、この書き方でlike検索はできないらしい。。gem使うとできるとかできないとか。とりあえず覚えて置く。以上です。