前提
Cloud9上でRuby on Railsを学ぶ目的で、音楽好きのためのSNSを作っています。
モデルは表(1)の2つです。
各ユーザーが0個以上のFavroteを持っていて、
各Favoriteに一つずつの曲名と歌手名が保存されているという感じです。
モデル | 関係 | カラム |
---|---|---|
User | 1 | id,name |
Favorite | 多 | title,artist |
表 モデルとカラムと関係
ユーザー検索のためのフォームにBootstrapのTokenfieldを使用しています。
トークンの値と一致するartistかtitleを持つ、Userを検索して表示するという流れです。
トークンはAjaxを使ってparams[:search]に『 | 』で区切られた文字列として入ります。
実現したい事
User#indexでUser検索の結果を表示するのですが、以下の様な情報を検索結果画面に表示したいのです。
検索ボックスに | Ben E. King | Stand By Me | という2つのトークンが入力されて、submitすると、
User#indexページにおいて
ユーザーが3人見つかりました。
ユーザー名:ExampleUser0
→ 3 件ヒットしました。
→ | Ben E. King - Stand By Me | Ben E. King - Spanish Harlem | Oasis - Stand By Me |
ユーザー名:ExampleUser1
→ 2 件ヒットしました。
→ | Ben E. King - Spanish Harlem | Oasis - Stand By Me |
ユーザー名:ExampleUser2
→ 1件ヒットしました。
→ | Ben E. King - Stand By Me |
具体的に言うと、
・クローンの値に一致するFavoriteを一つでも持つUserを取得
・取得したUserをクローンと一致したFavoriteの数順に並び替え
・クローンと一致したFavoriteの内容と、その総数をUser毎に取得して表示
という3つの機能をUser検索に実装したい、という内容です。
質問
このような検索実装に有効な方法や、
皆様ならどの様にアルゴリズム化するか、
をお聞きしたいです。
抽象的な質問で申し訳ないのですが、よろしくお願いします。
開発環境
Cloud9
Ruby '2.0.0'
Rails '4.0.5'
あなたの回答
tips
プレビュー