Rails способ записи даты операций в Mysql - PullRequest
0 голосов
/ 13 декабря 2011

Продолжая в моих вопросах Mysql to Rails, как Rails пишет следующий запрос:

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, но хотел бы попытаться придерживаться 'The Rails Way'

Спасибо

Редактировать: У меня есть это внутри метода моего класса под названием Поиск, например:

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 Ответ

1 голос
/ 13 декабря 2011

Полагаю, ваша модель называется Search

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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...