【发布时间】:2015-01-20 07:23:42
【问题描述】:
我有一个 ActiveRecord 模型 Post,其中包含字段 created_at 和 score。我想在最近创建的 50 个中按分数订购 Posts。所以基本上SQL是
SELECT * FROM
(SELECT * FROM Posts ORDER BY created_at DESC LIMIT 50) Sorted_Posts
ORDER BY score DESC
不幸的是,我不确定如何在 Rails 中执行此操作。我不喜欢使用原始 SQL 来完成此操作,因为查询中有许多未显示的过滤器会真正使原始 SQL 复杂化。我研究了可能使用to_sql 并去掉SELECT * FROM POSTS 前缀,然后将其放入where 或find_by_sql 函数中,但我觉得这可能是hacky 并可能导致SQL 注入?
谢谢。
【问题讨论】:
标签: mysql sql ruby-on-rails activerecord greatest-n-per-group