我在实现对Rails应用程序的特殊搜索时遇到问题。我正在开发一个成就系统,您可以在搜索表单中搜索一组用户(例如,查询为“Ross,Adam,Jake”),并返回用户已解锁的所有常见成就(例如,如果用户罗斯,亚当和杰克都有一个名为“你是赢家!”的成就。我有三个表,一个用于成就,一个用于用户,以及一个连接表。我们已经对这些关联进行了测试,所以我们知道它有效。
我的第一个想法是将搜索项放在一个数组中,并获取数组中每个项的搜索结果,并将它们放入相应的“搜索结果数组”中。然后,我想通过搜索结果数组1中的每个项目来查看它是否出现在其他两个结果数组中。出现在所有三个搜索结果数组中的对象将返回并显示在页面上。
有没有一种简单的方法来实现它而无需编写一堆我自己的代码?我应该知道一些功能吗?任何帮助将不胜感激!
答案 0 :(得分:0)
嗯,Ransack和它的前身(MetaSearch)都是创建复杂搜索表单的有用宝石。
总的来说,我认为你想要为数组中的用户ID选择不同的成就ID。我不太清楚你应该怎么写它......其他人可能知道。
查看关于MetaSearch的文档(更成熟),看看你是否看到适合的模式,如果没有检查Ransack(更高级)。
答案 1 :(得分:0)
您可以为用户名使用一些自动完成插件,并在运行时将名称转换为ID,这样您就不必在以后处理将用户名转换为后端的ID。
对于共同的成就,如果用户只能获得一次成就,则将结果聚合在连接表中并使用成就ID计算结果将是最佳选择。
您可以提供更多详细信息以获得更详细的答案。 :)
答案 2 :(得分:0)
您可以使用Sunspot,这样可以轻松地与Ruby和Rails进行solr集成