我有一个表,用于存储用户在搜索字段中输入的内容。我编写了一个操作来显示最流行的搜索以及搜索的次数。为此,我在 Controller 中编写了以下 sql 查询...
SELECT `query`,
COUNT(`query`) AS `query_count`
FROM `searches`
WHERE [foo things]
GROUP BY `query`
ORDER BY `query_count` DESC
...并将其作为变量传递到 Search.find_by_sql(query)
中,将其保存为实例变量,并使用 every block 迭代数组并打印出 搜索['query_count']
。这正是我想要的,但我很想知道如何以 Ruby 方式执行此操作,因为我知道在 Controller 中只使用 sql 查询是不好的做法。我知道如何将 WHERE
条件放入named_scopes,但我不知道如何在 Ruby 中复制查询的其余部分。
我使用的是 mysql、ruby 1.8.7、rails 2.3.15。
最佳答案
应该很简单:
Search.select(:query, 'count(query) as query_count').where(foo things).group(:query).order('query_count DESC')
关于mysql - Ruby 的分组、计数、重构方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22619700/