如何通过has_many计算rails应用程序视图中的平均值?

时间:2013-05-25 01:46:16

标签: ruby-on-rails

我试图通过has_many关系来计算我的rails应用视图中的平均评分。

型号:

class Review < ActiveRecord::Base
  belongs_to :product
  attr_accessible :rating, :review
  belongs_to :user
end


class Product < ActiveRecord::Base
  attr_accessible  :name
  has_many :reviews
  has_many :supplements
  acts_as_taggable
end

控制器:

@products = Product.all

查看:

<% @products.each do |product| %>
    <%= product.NOT SURE %>
<% end %>

我希望在视图中显示该给定产品的平均评分,但我不确定如何。有什么建议吗?

1 个答案:

答案 0 :(得分:3)

在您看来,您需要以下内容:

<% @products.each do |product| %>
    <%= product.average_rating %>
<% end %>

现在你只需要进行average_rating,这可以进入模型:

def average_rating
    if self.reviews.size > 0
        self.reviews.average(:rating)
    else
        'undefined'
    end
end

因此,average_rating总结了评论评级,并除以平均评分数。您可以对格式等进行润色。