3
我有一个非常简单的关系数据库非常简单的Rails应用程序:类别有很多样本。我只想加载具有X个样本的类别。将(稍微复杂的)原始SQL查询翻译成ActiveRecord/Arel?
在普通的SQL我会做这样的事情:
SELECT
categories.*
FROM
categories
JOIN
(SELECT
category_id, COUNT(*) as sample_count
FROM
samples
GROUP BY
category_id
) AS subselect
ON
categories.id=subselect.category_id
WHERE
subselect.sample_count = X; -- where X is whatever
这工作就好了,顺便说一下,但它不是非常的Rails样使用原始SQL。显然我希望将这些类别作为模型实例,因此:
我该如何去重写类似ActiveRecord或Arel查询的东西?它是否可行,还是应该使用纯SQL?有没有可能是一个完全简单的方法呢?
啊,非常好,干净!我正在考虑为类别添加'samples_count'列,但我不知道Rails有内置的逻辑来保持它最新(不知道我是如何错过的)。不想自己写这个,所以我没有追求:) – Flambino 2012-03-26 21:42:51