我使用gem act-as-taggable-on来标记我的资源。 我想知道是否有一种有效的方法(预先定义的方法等)来选择具有最多重合标记的5个资源的列表。
诅咒我可以写一个双循环然后命令结果,但可能有更好的方法。
提前致谢
更新
我编写了这段代码,用于查找给定“提示”的三个最相似的提示
def similar_tips(tip)
if tip.is_a?(Tip)
sim_tips=Tip.all.map{ |t| [t,(t.tag_list & tip.tag_list).size]}.sort_by {|a,n| n}.reverse[0..2]
sim_tips.map{|t,n| t}
end
end
它确实有效,但对我来说看起来很难看=)