3

特定のカテゴリ内のスコアを平均しようとしています。監督、映画、ジャンル、評価、スコアのリストを含むテーブルがあります。ユーザーが映画をクリックすると、そのジャンルの他のすべての映画の平均スコアが表示されるようにしたいと考えています。

条件と合わせて平均法を使わないといけないと思います。とはいえ、この特定のトピックに関して役立つドキュメントをオンラインで見つけることができませんでした。誰かが、条件付きの平均を計算してビューに表示する方法を説明するガイドまたは記事の方向性を教えてくれれば、とてもありがたいです!

4

3 に答える 3

6

ActiveRecordは、他の計算とともに、averageと呼ばれるメソッドを提供します。次のような実装で使用できます。

class Movie
  def self.average_by_genre(genre)
    average(:rating).where(:genre => genre)
  end
end

または、Movieモデルのインスタンスメソッドとして実装することもできます。

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>
于 2013-03-18T20:46:10.423 に答える
5

生の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

于 2013-03-18T20:46:02.653 に答える