任意の数の用語で検索できるようにする必要がある、カンマ区切りの文字列値の 4 つの列を持つトラック モデルがあります。
例えば
Track.first.genre => "Alternative, Lite Rock, Indie Rock, Psychedelic"
Track.first.mood => "Aggressive, Angry, Dark, Driving, Energetic, Heavy"
Track.first.tempo => "Fast, Medium"
Track.first.artist => "something"
その後、ユーザーは任意の数の用語を使用して、表示されたトラックのリストを絞り込むことができます。各列に一致する配列に用語を収集しています。例えば
genres = params[:genre].split(",")
moods = params[:mood].split(",")
等々。ジャンル => ["ロック", "オルタナティブ"] の場合、ジャンル列にこれらの用語のいずれかを含むすべてのトラックに一致し、追加のすべての用語は返された配列から選択され、4 つのそれぞれについて同様に続きます。列。
これを行う最良の方法は何ですか? また、配列を条件として like を使用して where クエリを作成するにはどうすればよいですか?