2015-08-25 67 views
0

用戶提交搜索後,我想顯示公司在相同搜索以及哪一天完成的歷史記錄。讓我來解釋......Rails:使用兩列返回uniq結果

我有一個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

您需要按照公司的ID和搜索日期排列group

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

includes給你訪問用戶表,它允許您按公司ID。 group確保您只爲每個公司ID和搜索日期獲取一條記錄。

0

這應做到:

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