我試圖平均特定類別內的分數。我有一張表格,其中包含導演,電影,流派,評分和評分列表。當用戶點擊一部電影時,我希望他們能夠看到該類型中所有其他電影的平均分數。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