2011-12-13 21 views
0

繼續在我的MySQL到Rails的問題迄今操作,什麼是寫下面的查詢的Rails的方式:Rails的方式寫在MySQL

SELECT COUNT(searchTerm) AS percent, searches.* 
FROM `searches` 
WHERE `results` = 0 AND searchDate > DATE_SUB(CURDATE(), INTERVAL 7 DAY) 
GROUP BY `searchTerm` 
ORDER BY percent DESC, searchDate DESC 

我得到儘可能下面的代碼,但此行AND searchDate > DATE_SUB(CURDATE(), INTERVAL 7 DAY)我不知道如何在Rails中表示,或者甚至可能。

where("results = 0").group('searchTerm').count('searchTerm') 

我能避開它通過發出的find_by_sql但想嘗試堅持「Rails的道路」

感謝

編輯: 我有這樣的一個方法中我的類調用搜索,像這樣:

def self.no_results 
    where("results = 0").group('searchTerm').count('searchTerm') 
end 

EDIT2: 我不得不這樣說寫:

select("searches.*, COUNT(searchTerm) AS percent").where("results = 0 AND searchDate > DATE_SUB(CURDATE(), INTERVAL 7 DAY)").group("searchTerm").order("percent DESC, searchDate DESC") 

由於使用"searchDate > ?", DATE_SUB(CURDATE(), INTERVAL 7 DAY)會給我一個語法錯誤。

回答

1

我會想你的模型被稱爲搜索

Search 
    .select("searches.*, COUNT(searchTerm) AS percent") 
    .where("results = ? AND searchDate > ?", 0, DATE_SUB(CURDATE(), INTERVAL 7 DAY)) 
    .group("searchTerm") 
    .order("percent DESC, searchDate DESC") 
+0

很抱歉,但我會怎麼把這個變成我的方法,如果我複製他們爲你發佈的這些給我的錯誤。 – kakubei

+0

我想我明白了,我只是愚蠢的,讓我來運行它,看看會發生什麼。 – kakubei