recommendations
,ratings
和product
。一个product
拥有多个recommendations
,一个recommendation
拥有多个products
和多个ratings
,一个rating
属于一个recommendation
。目前我正在使用以下查询在我的索引中查找所有记录:
@recommendations = Recommendation.find(:all, :joins => :products, :conditions => ["product_id = ? AND rating_set = ?", (params["product_id"]), (params["rating_set_id"])])
为了获取每条记录的推荐评分,我在我的视图中调用了另一个作用域。
如果要获取特定product_id
和rating_set
找到的所有推荐和评分,我应该将@recommendations
设置为什么?
我尝试过:
Recommendation.find(:all, :joins => :products,:include => :ratings, :conditions => ["product_id = ? AND rating_set = ?",2086981,40]).each do |rec|
puts rec.rating
end
这句话打印出了 Nil
。
更新了模型:
产品(Product)
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"])])
我的查询目标是: 我需要找到所有商品id和评分集=?,?的推荐,并在此基础上,找到每个推荐所属的所有评分。
更新
使用以下查询,我能够获取属于某个推荐的所有评分:
Recommendation.joins(:product_recommendations).includes(:ratings).where(:product_recommendations => { :rating_set => 48, :product_id => 2144877 })
当我遍历返回的评分数组时,它们并没有限定为正确的评分集,而是我得到了属于特定推荐的所有评分集的所有评分。如何获取每个推荐和评分集的评分数组?
Recommendation.find(:all, :joins => :products,:include => :ratings)
返回什么? - Michael Durrant