dca*_*iro 13 ruby-on-rails ruby-on-rails-3
我有以下型号:
activity_types: id, name
activities: id, id_activity_type, occurrences, date (other fields)
Run Code Online (Sandbox Code Playgroud)
活动表存储活动按天发生的次数.但是现在我想向用户显示每个类型的活动按月发生了多少.
我根据这篇文章得到了以下解决方案,似乎没问题:
Activity.all(:joins => :activity_types,
:select => "activity_types.id, activity_types.name, SUM(activities.occurrences) as occurrences",
:group => "activity_types.id, activity_types.name",
:order => "activity_types.id")
Run Code Online (Sandbox Code Playgroud)
但这似乎有很多关于rails标准和rails API的代码说它已经被弃用了.
我发现以下解决方案非常简单:
Activity.sum(:occurrences).group(:activity_type_id)
Run Code Online (Sandbox Code Playgroud)
返回带有activity_type_id => occurrence 的哈希值.
我该怎么做以获得以下哈希:activity_type.name =>出现?
Mar*_*oda 15
如果原始查询有效,那么只需尝试使用Rails 3语法重写它:
Activity.joins(:activity_types)
.select("activity_types.id, activity_types.name, SUM(activities.occurrences) as occurrences")
.group("activity_types.id, activity_types.name")
.order("activity_types.id")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25934 次 |
最近记录: |