用户提交搜索后,我想显示公司在同一天进行相同搜索的历史记录。让我解释一下......
我有一个searches
表,如下:
id user_id date query
1 1 01-01-2015 A457263
2 1 01-01-2015 A457263
3 2 01-01-2015 A457263
4 3 01-01-2015 A457263
5 3 02-01-2015 A457263
且users
属于公司:
id company_id
1 1
2 1
3 2
id name
1 Company One
2 Company Two
现在我要做的是选择针对该特定查询A457263
的所有搜索。我假设它:
query = params[:query]
@history = Search.where("query = ?", query)
然后过滤掉同一天在同一家公司用户进行的重复搜索。
所以最终结果如下:
id user_id date query
1 1 01-01-2015 A457263
4 3 01-01-2015 A457263
5 3 02-01-2015 A457263
我一直在搞乱uniq方法,但这次我无法绕过它。
答案 0 :(得分:0)
您需要group公司ID和搜索日期。
@history = Search.includes(:user).where("searches.query = ?", query).group("users.company_id, searches.date")
includes
可让您访问用户表,该表允许您按公司ID进行分组。 group
确保您只为每个公司ID和搜索日期获得一条记录。
答案 1 :(得分:0)
这应该这样做:
@history = Search.joins(:users).where("searches.query = ?", query).uniq.group("users.company_id, searches.date")