Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:使用两列返回uniq结果_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails:使用两列返回uniq结果

Ruby on rails Rails:使用两列返回uniq结果,ruby-on-rails,ruby,Ruby On Rails,Ruby,在用户提交搜索后,我想显示哪些公司在哪一天进行了相同搜索的历史记录。让我解释一下 我有一个搜索表,如下所示: 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

在用户提交搜索后,我想显示哪些公司在哪一天进行了相同搜索的历史记录。让我解释一下

我有一个
搜索
表,如下所示:

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
用户
属于一家公司:

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方法,但这次我没法摆脱它。

你需要根据公司ID和搜索日期进行搜索

@history = Search.includes(:user).where("searches.query = ?", query).group("users.company_id, searches.date")
includes
允许您访问用户表,该表允许您根据公司ID进行分组。
group
确保每个公司ID和搜索日期只获得一条记录。

这应该可以做到:

@history = Search.includes(:user).where("searches.query = ?", query).group("users.company_id, searches.date")
@history = Search.joins(:users).where("searches.query = ?", query).uniq.group("users.company_id, searches.date")