0

私は次のモデルを持っています:

製品:

class Product < ActiveRecord::Base
  has_many :product_recommendations, :dependent => :destroy
  has_many :recommendations, :through => :product_recommendations  
end

製品の推奨事項:

class ProductRecommendation < ActiveRecord::Base
  belongs_to :recommendation
  belongs_to :product
end

おすすめ:

class Recommendation < ActiveRecord::Base
  has_many :product_recommendations, :dependent => :destroy
  has_many :products, :through => :product_recommendations

  has_many :recommendation_ratings, :dependent => :destroy
  has_many :ratings, :through => :recommendation_ratings
end

評価:

class Rating < ActiveRecord::Base
  has_many :recommendation_ratings, :dependent => :destroy
  has_many :recommendations, :through => :recommendation_ratings
end

RecommendationRating:

class RecommendationRating < ActiveRecord::Base
  belongs_to :recommendation
  belongs_to :rating  
end

特定の推奨事項の平均評価を計算するにはどうすればよいですか?評価テーブルには4つのレコード(評価1〜4)しか含まれていません。推奨コントローラーに、RecommendationsRatings結合テーブルを更新して評価を推奨に関連付けるアクションがあります。ありがとう!

4

1 に答える 1

0

やってみました:

class Product < ActiveRecord::Base
  has_many :product_recommendations, :dependent => :destroy
  has_many :recommendations, :through => :product_recommendations
  has_many :ratings, :through => :recommendations
end

その後

p = Product.find 1
p.ratings.average(:rating)  

これは、Ratingsモデルに、レーティングを格納するレーティングと呼ばれるint/floatがあることを前提としています。

于 2013-02-07T20:12:56.167 に答える