次のモデルがあります: recommendations
、ratings
およびproduct
。A product
has_many
recommendations
、 a recommendation
has_many
products
、 a 、recommendation
has_many
ratings
および a rating
belongs_to
a recommendation
。
現在、次のクエリを使用して、インデックス内のすべてのレコードを検索しています。
@recommendations = Recommendation.find(:all, :joins => :products, :conditions => ["product_id = ? AND rating_set = ?", (params["product_id"]), (params["rating_set_id"])])
各レコードの推奨評価を取得するために、ビューで I call を使用した別のスコープがあります。
特定のand@recommendatons
によって見つかったすべての推奨事項と評価を取得するには、何を設定すればよいですか?product_id
rating_set
私は試した:
Recommendation.find(:all, :joins => :products,:include => :ratings, :conditions => ["product_id = ? AND rating_set = ?",2086981,40]).each do |rec|
puts rec.rating
end
どちらが印刷されましたかNil
。
モデルで更新:
製品
class Product < ActiveRecord::Base
has_many :product_recommendations, :dependent => :destroy
has_many :recommendations, :through => :product_recommendations
end
おすすめ
class Recommendation < ActiveRecord::Base
has_many :product_recommendations, :dependent => :destroy
has_many :products, :through => :product_recommendations
has_many :ratings
end
評価:
class Rating < ActiveRecord::Base
belongs_to :recommendation
end
これは私が必要とする結果です(これは評価が作成されている場合にのみ機能するため、使用できません):
@recommendations = Rating.find(:all, :conditions => ["product_id = ? AND rating_set = ?", (params["product_id"]), (params["rating_set_id"])])
何を照会していますか: product_id および rating_set = ?, ? であるすべての推奨事項を検索する必要があります。そして、これらの推奨事項のそれぞれに属するすべての評価を見つけます。
アップデート
次のクエリを使用して、レコメンデーションに属するすべての評価を取得できます:
Recommendation.joins(:product_recommendations).includes(:ratings).where(:product_recommendations => { :rating_set => 48, :product_id => 2144877 })
返された評価の配列をループすると、それらは正しい rating_set に限定されませんが、ある評価に属するすべての rating_set のすべての評価を取得します。具体的な推奨事項。各推奨事項と rating_set の評価の配列を取得するにはどうすればよいですか。