【发布时间】:2012-03-17 21:31:56
【问题描述】:
假设我有一张包含 100 条产品评论的表格。每条评论都有一个“id”、“product_id”和“score”。现在,我想做的是展示每个产品的平均分数......那么有没有办法使用 Rails 查询数据库来做到这一点?我确定一定有,但我想不通。我希望发生以下情况:
Toyota Corolla 70%
Toyota Camry 78%
Toyota Avalon 80%
.. 显然基于对每个平均的多个评论,但以上述方式呈现。
更新:
对于那些对解决方案感兴趣的人
这是在控制器中:
@ordered_hash = Review.group('aidmodel_id').average('score')
@keys = @ordered_hash.keys
@reviews = Review.where(:aidmodel_id=>@keys).uniq_by {|x| x.aidmodel_id}
这是在视图中:
<% @reviews.each do |review| %>
<%= review.aidmodel.id %>
<%= @ordered_hash[review.aidmodel_id] %>
<% end %>
@ordered_hash[review.aidmodel_id] 行提供具有所需 ID 的辅助模型的平均分数。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 postgresql