Sql 查询中的ActiveRecord聚合属性
我尝试使用ActiveRecord和Rails 3执行如下查询:Sql 查询中的ActiveRecord聚合属性,sql,ruby-on-rails,ruby-on-rails-3,activerecord,Sql,Ruby On Rails,Ruby On Rails 3,Activerecord,我尝试使用ActiveRecord和Rails 3执行如下查询: select count(*), * from messages group by thread_id 我正在尝试构建一个简单的线程消息系统的收件箱。此查询的目的是将所有消息对象折叠为每个线程最近的一个,并检索线程的大小 或者,我可以只检索每个线程的所有顶级消息(只需删除计数(*),然后将计数作为每组消息的单独查询来执行,但这似乎效率极低 有人有什么想法吗?在ActiveRecord中是否有这样做的方法?要让rails(3)生成
select count(*), * from messages group by thread_id
我正在尝试构建一个简单的线程消息系统的收件箱。此查询的目的是将所有消息对象折叠为每个线程最近的一个,并检索线程的大小
或者,我可以只检索每个线程的所有顶级消息(只需删除计数(*),然后将计数作为每组消息的单独查询来执行,但这似乎效率极低
有人有什么想法吗?在ActiveRecord中是否有这样做的方法?要让rails(3)生成所需的查询,请尝试:
Message.select('count(*) as thread_size, *').group(:thread_id)
线程中的消息数将作为返回的消息记录的thread\u size
属性提供
如果您发现随着数据库变大,此查询开始变慢,您可能需要查看Rails的计数器缓存
功能(请参阅)