我试图平均特定类别内的分数。我有一张表格,其中包含导演,电影,流派,评分和评分列表。当用户点击一部电影时,我希望他们能够看到该类型中所有其他电影的平均分数。Rails计算并显示平均值
我认为我必须结合条件使用平均法。这就是说,我一直无法在网上找到关于这个特定主题的有用文档。如果有人能够指导我解释如何根据条件计算平均值并在视图中显示它们的指南或文章的方向,我将不胜感激!
我试图平均特定类别内的分数。我有一张表格,其中包含导演,电影,流派,评分和评分列表。当用户点击一部电影时,我希望他们能够看到该类型中所有其他电影的平均分数。Rails计算并显示平均值
我认为我必须结合条件使用平均法。这就是说,我一直无法在网上找到关于这个特定主题的有用文档。如果有人能够指导我解释如何根据条件计算平均值并在视图中显示它们的指南或文章的方向,我将不胜感激!
总之,ActiveRecord的提供了一个名为average方法。您可以通过实现像这样使用它:
class Movie
def self.average_by_genre(genre)
average(:rating).where(:genre => genre)
end
end
另外,您还可以实现它作为电影模型的实例方法。
class Movie
def average_rating
self.class.average(:rating).where(:genre => self.genre)
end
end
这会让你直接从你的视图调用方法。
<article>
<header>
<h1><%= @movie.title %></h1>
</header>
<p>
<span>Average rating for genre <%= @movie.genre %>:</span>
<%= @movie.average_rating %>
</p>
</article>
这太棒了,谢谢!如何在视图中显示这个平均值? – bork121 2013-03-18 21:00:12
您是否认为应该在模型,视图或装饰器中计算平均值? – 2014-11-14 04:03:18
如何处理一些原始SQL?
SELECT AVG(score) FROM movies WHERE category_id = 42
或者在轨:
Movie.where(category_id: 42).average("score")
在这里阅读更多的信息:http://guides.rubyonrails.org/active_record_querying.html#average
你怎么样移动SQL
原始查询到database view
:
# movies_view
SELECT m.id, AVG(m.score) avg_score, c.category_id
FROM movies m
JOIN category c
ON m.category_id
所以,你需要从MovieView
MovieView.find(:movie_id).avg_score
也许http://stackoverflow.com/questions查询/ 984995/ruby-on-rails-field-average – Agis 2013-03-18 20:42:25