我有以下型号recommendations
:ratings
和product
。一个product
has_many
recommendations
,一个recommendation
has_many
products
,一个recommendation
has_many
ratings
和rating
belongs_to
一个recommendation
。
我目前正在使用以下查询来查找索引中的所有记录:
@recommendations = Recommendation.find(:all, :joins => :products, :conditions => ["product_id = ? AND rating_set = ?", (params["product_id"]), (params["rating_set_id"])])
为了获得每条记录的推荐评级,我认为我有另一个范围。
我要设置什么@recommendatons
来取回由特定product_id
and找到的所有推荐和评级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 的一系列评分。