0

私が望むものを達成するための最良の方法は何だろうと思っています:p

多くの「ModelARate」を持つモデル「ModelA」があります。ModelARate には、コメントまたはレート (またはその両方) が含まれます。

ModelA が表示されるたびに平均レートを計算したくありません。データベースにとってはクールではないため (すべての ModelARate にアクセスしてレートを取得する...)、最低レートと最高レートも知る必要があります。

レールでこれを達成する最良の方法は? (宝石を使わずに、それが実際にどのように機能するかを理解する必要があります)

ModelARate が作成されると増加する ModelA に属性 rate_score を追加することと、rate_score / modelarates.size を返すメソッドを追加することを考えていました。レールでこれを行うことができるメカニズムはありませんか?

助けてくれてありがとう

4

1 に答える 1

2

Rails http://api.rubyonrails.org/classes/ActiveRecord/Calculations.htmlで計算方法を使用できます

モデルの場合、ModelA レコードがあれば、次のことができます。

maximum = model_a.model_a_rates.maximum(:rate)
minimum = model_a.model_a_rates.minimum(:rate)
average = model_a.model_a_rates.average(:rate)

これらの計算はすべて SQL サーバー上で行われるため、非常に高速であるため、速度について心配する必要はありません。

于 2013-02-08T15:15:34.817 に答える