【问题标题】:Display Country with the most occurrences Rails 3显示出现次数最多的国家 Rails 3
【发布时间】:2012-11-15 12:05:40
【问题描述】:

我有一个国家模型,想显示出现次数最多的国家,国家名称保存在“mame”列中,但是国家数据库是预先填充的,关系是一个国家

has_many recipes 

和食谱

 belongs_to country

目前为止

Country.group('name').order('count_name DESC').limit(1).count('name')

但这行不通,因为表中每个国家/地区都有 1 个?我需要计算使用 country_id 的次数吗?如果是这样,那么语法是什么?会不会是

Recipe.group('country_id').order('count_country_id DESC').limit(1).count('country_id')

或使用连接并选择

Country.joins(:recipes).select('countries.*, count(country_id) as "country_count"').group(:country_id).order(' country_count desc')

欢迎指点

【问题讨论】:

标签: ruby-on-rails-3 activerecord


【解决方案1】:

您可以使用查询来做到这一点。但是,RoR 已内置支持以实现相同的目标。它被称为计数器缓存。

我可以在这里解释,但我认为如果你关注这个截屏视频会更好。

http://railscasts.com/episodes/23-counter-cache-column

这将使您很好地了解如何使用计数器缓存并获得您尝试实现的目标。

【讨论】:

  • 那你就不需要了。请检查视频,你会明白的。事情会容易得多。
猜你喜欢
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 1970-01-01
  • 2019-09-11
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多