タグ付け可能なActsでタグマッチの数を見つける方法
-
10-10-2019 - |
質問
データベースには2つのエントリがあります
OBJ1は「Hello、World、Planet」でタグ付けされていますobj2は「hello」でタグ付けされています
modelname.tagged_with(["hello"、 "world"、 "planet"、 "are"]、:any => true)を行う場合
一致するタグの数が最も多い順に、返されたオブジェクトを並べ替えたいです。したがって、この場合、私はOBJ1、OBJ2になりたいです
これどうやってするの?返された結果ごとに一致するタグの数を取得する方法はありますか?
解決
あなたは電話することができます tag_list
オブジェクトで、それを使用して、次のタグの数を把握します。
tags = %w{hello world planet earth}
objs = ModelName.taggedWith(tags, :any => true)
objs.sort_by! { |o| -(tags & o.tag_list).length }
tags & o.tag_list
探しているタグの交差点とタグが見つかった、次に、交差点のサイズを無効にして伝える sort_by
(これは昇順で並べ替えます)より大きな交差点を前面に置くために、結果を無効にすることは、通常のソート順序を簡単に逆転させる方法です。
所属していません StackOverflow