如何在 Rails 3 中加入表并计算记录?
Posted
技术标签:
【中文标题】如何在 Rails 3 中加入表并计算记录?【英文标题】:How to join a table and count records in Rails 3? 【发布时间】:2011-10-23 15:50:53 【问题描述】:我有一个Collection
班级,里面有很多硬币。
我正在尝试选择具有两个以上硬币的收藏。
目前,我通过直接的 Ruby 执行此操作没有问题,但效率极低。
我当前的代码:
collections = Collection.all.select |c| c.coins.count > 2
我如何通过与 Arel 的 joins
通话来实现这一目标?
谢谢!
【问题讨论】:
你不应该使用 Collection 作为类名...有几个 Ruby 内置结构需要集合(例如 rails 模型集合),并且可能会发生你覆盖一些导致意外行为的东西。 . 感谢您的提示。任何想法如何创建“加入”? 【参考方案1】:回答我自己的问题:
Collection.joins(:coins).group("coins.collection_id").having("count(coins.id) > 2")
向KJF 提出问题的this similar question 和krakover 回答问题。
【讨论】:
【参考方案2】:添加 counter_cache 列并查询它们。
http://railscasts.com/episodes/23-counter-cache-column
【讨论】:
谢谢。计数器缓存旨在动态保存计数记录。鉴于我的收藏每个只包含 2-5 个硬币,这不是问题,我宁愿不在数据库中存储单独的列。任何想法如何使用 Rails 3 编写joins
查询?以上是关于如何在 Rails 3 中加入表并计算记录?的主要内容,如果未能解决你的问题,请参考以下文章